Incorrect index validation
atynagano opened this issue · 3 comments
atynagano commented
rust-gpu/crates/spirv-std/src/byte_addressable_buffer.rs
Lines 73 to 78 in e87c324
if byte_index + mem::size_of::<T>() as u32 > (mem::size_of::<u32> * self.data.len()) as u32
Isn't the right-hand side multiplied by 4 because data
is &[u32]
?
Patryk27 commented
ByteAddressableBuffer
requires for the data to be aligned to 4 bytes, so the current condition is fine IMO; the naming could be better (word_index: u32
), but the comment above explains it's inherited from HLSL.
Note that buffer_load_intrinsic()
ends up doing 4 * byte_index
:
atynagano commented
So does the left side size_of<T>
needs to be divided by 4? Or does size_of
returns dword size?
Patryk27 commented
Oh, yeah - I think it should say mem::size_of::<T>() / 4
then 🤔