@@ -377,6 +377,7 @@ export
377377 HLSL ::StructuredBuffer<T> structuredBuffer;
378378 HLSL ::RWStructuredBuffer<T> rwStructuredBuffer;
379379 HLSL ::AppendStructuredBuffer<T> appendStructuredBuffer;
380+ HLSL ::ConsumeStructuredBuffer<T> consumeStructuredBuffer;
380381
381382 StructuredBufferView () = default ;
382383 CounterView counter_view;
@@ -451,17 +452,17 @@ export
451452 counter_view = counter_view.resource ->create_view <CounterView>(frame, 0 );
452453 }
453454
454- auto hlsl = frame.alloc_descriptor (5 , DescriptorHeapIndex{
455+ auto hlsl = frame.alloc_descriptor (6 , DescriptorHeapIndex{
455456 HAL ::DescriptorHeapType::CBV_SRV_UAV ,
456457 HAL ::DescriptorHeapFlags::ShaderVisible
457458 });
458459
459460 structuredBuffer = HLSL ::StructuredBuffer<T>(hlsl[0 ]);
460461 rwStructuredBuffer = HLSL ::RWStructuredBuffer<T>(hlsl[1 ]);
461462 appendStructuredBuffer = HLSL ::AppendStructuredBuffer<T>(hlsl[2 ]);
463+ consumeStructuredBuffer = HLSL ::ConsumeStructuredBuffer<T>(hlsl[3 ]);
462464
463-
464- rwRAW = HLSL ::RWBuffer<std::byte>(hlsl[3 ]);
465+ rwRAW = HLSL ::RWBuffer<std::byte>(hlsl[4 ]);
465466
466467 // constBuffer = HLSL::ConstBuffer<T>(hlsl[4]);
467468
@@ -483,9 +484,16 @@ export
483484 rwRAW.create (resource, Format::R8_UINT , static_cast <UINT >(offset), static_cast <UINT >(size));
484485
485486 if (desc.counted != counterType::NONE )
486- appendStructuredBuffer.create (get_counter_buffer (), get_counter_offset (), resource,
487+ {
488+ appendStructuredBuffer.create (get_counter_buffer (), get_counter_offset (), resource,
487489 static_cast <UINT >(offset / sizeof (Underlying<T>)),
488490 static_cast <UINT >(size / sizeof (Underlying<T>)));
491+
492+ consumeStructuredBuffer.create (get_counter_buffer (), get_counter_offset (), resource,
493+ static_cast <UINT >(offset / sizeof (Underlying<T>)),
494+ static_cast <UINT >(size / sizeof (Underlying<T>)));
495+ }
496+
489497 }
490498 }
491499
0 commit comments