diff --git a/player/tests/data/all.ron b/player/tests/data/all.ron index 0b493a9b8..d75a105ba 100644 --- a/player/tests/data/all.ron +++ b/player/tests/data/all.ron @@ -2,7 +2,8 @@ backends: (bits: 0xF), tests: [ "buffer-copy.ron", - "buffer-zero-init.ron", + "buffer-zero-init-for-mapping-and-writing.ron", + "buffer-zero-init-for-binding.ron", "bind-group.ron", "quad.ron", ], diff --git a/player/tests/data/buffer-zero-init-for-binding.ron b/player/tests/data/buffer-zero-init-for-binding.ron new file mode 100644 index 000000000..5ceb42484 --- /dev/null +++ b/player/tests/data/buffer-zero-init-for-binding.ron @@ -0,0 +1,99 @@ +( + features: (bits: 0x0), + expectations: [ + ( + name: "buffer has correct values", + buffer: (index: 0, epoch: 1), + offset: 0, + data: Raw([0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00]), + ) + ], + actions: [ + CreateShaderModule( + id: Id(0, 1, Empty), + desc: ( + label: None, + experimental_translation: true, + ), + data: "buffer-zero-init-for-binding.wgsl", + ), + CreateBuffer(Id(0, 1, Empty), ( + label: None, + size: 16, + usage: ( + bits: 129, // STORAGE + MAP_READ + ), + mapped_at_creation: false, + )), + CreateBindGroupLayout(Id(0, 1, Empty), ( + label: None, + entries: [ + ( + binding: 0, + visibility: ( + bits: 4, + ), + ty: Buffer( + ty: Storage( + read_only: false, + ), + has_dynamic_offset: false, + min_binding_size: Some(16), + ), + count: None, + ), + ], + )), + CreateBindGroup(Id(0, 1, Empty), ( + label: None, + layout: Id(0, 1, Empty), + entries: [ + ( + binding: 0, + resource: Buffer(( + buffer_id: Id(0, 1, Empty), + offset: 0, + size: Some(16), + )), + ), + ], + )), + CreatePipelineLayout(Id(0, 1, Empty), ( + label: None, + bind_group_layouts: [ + Id(0, 1, Empty), + ], + push_constant_ranges: [], + )), + CreateComputePipeline(Id(0, 1, Empty), ( + label: None, + layout: Some(Id(0, 1, Empty)), + stage: ( + module: Id(0, 1, Empty), + entry_point: "main", + ), + )), + Submit(1, [ + RunComputePass( + base: ( + label: None, + commands: [ + SetPipeline(Id(0, 1, Empty)), + SetBindGroup( + index: 0, + num_dynamic_offsets: 0, + bind_group_id: Id(0, 1, Empty), + ), + Dispatch((4, 1, 1)), + ], + dynamic_offsets: [], + string_data: [], + push_constant_data: [], + ), + ) + ]), + ] +) \ No newline at end of file diff --git a/player/tests/data/buffer-zero-init-for-binding.wgsl b/player/tests/data/buffer-zero-init-for-binding.wgsl new file mode 100644 index 000000000..291485a53 --- /dev/null +++ b/player/tests/data/buffer-zero-init-for-binding.wgsl @@ -0,0 +1,15 @@ +[[builtin(global_invocation_id)]] +var global_id: vec3; + +[[block]] +struct InOutBuffer { + data: [[stride(4)]] array; +}; + +[[group(0), binding(0)]] +var buffer: [[access(read_write)]] InOutBuffer; + +[[stage(compute), workgroup_size(1)]] +fn main() { + buffer.data[global_id.x] = buffer.data[global_id.x] + global_id.x; +} diff --git a/player/tests/data/buffer-zero-init.ron b/player/tests/data/buffer-zero-init-for-mapping-and-writing.ron similarity index 100% rename from player/tests/data/buffer-zero-init.ron rename to player/tests/data/buffer-zero-init-for-mapping-and-writing.ron