Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I added slice access to
specs
(amethyst/specs#634) to support OpenCL (amethyst/specs#553). Usage looks like:Components can be processed using an OpenCL kernel:
There's a catch when using slices from
DefaultVecStorage<T>
orVecStorage<T>
. The slices are sparse, which means the kernel will either uselessly processT::default()
or perform unchecked access into aMaybeUninit<T>
for any entity which does not have componentT
.Exposing a slice from
hibitset::BitSet
would allow an OpenCL kernel check the storage mask itself:This PR adds
layer{0,1,2}_as_slice(&self) -> &[usize]
toBitSet
, as well as trivial constants which make correct usage more obvious. Layer 3 is specified to be a singleusize
so I didn't see any benefit to exposing it as a slice.