diff options
| author | Darren Wihandi <65404740+fairywreath@users.noreply.github.com> | 2025-03-14 18:32:37 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-14 15:32:37 -0700 |
| commit | c8c9e424e91e72e718529ed76df14f7586624cd6 (patch) | |
| tree | b9846efaec0dc5cf96ddbdceb4362020761374d7 /source/slang/hlsl.meta.slang | |
| parent | c2e8f9c1ebe316d7f3b2932fa1c24065fdf83d37 (diff) | |
Implement GetDimensions for structured buffers on WGSL (#6609)
* Implement structured buffer GetDimensions for WGSL
* byte address buffer fix
* enable wgsl test and minor fixups
* maybe fix get equivalent structured buffer
* remove unnecessary include
* clean up some code in meta file
Diffstat (limited to 'source/slang/hlsl.meta.slang')
| -rw-r--r-- | source/slang/hlsl.meta.slang | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index c26a7613b..c7e4925be 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -67,15 +67,15 @@ __intrinsic_op($(kIROp_StructuredBufferGetDimensions)) uint2 __structuredBufferGetDimensions(ConsumeStructuredBuffer<T,L> buffer); __intrinsic_op($(kIROp_StructuredBufferGetDimensions)) -[require(cpp_cuda_glsl_hlsl_metal_spirv, structuredbuffer)] +[require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, structuredbuffer)] uint2 __structuredBufferGetDimensions<T,L:IBufferDataLayout>(StructuredBuffer<T,L> buffer); __intrinsic_op($(kIROp_StructuredBufferGetDimensions)) -[require(cpp_cuda_glsl_hlsl_metal_spirv, structuredbuffer_rw)] +[require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, structuredbuffer_rw)] uint2 __structuredBufferGetDimensions<T,L:IBufferDataLayout>(RWStructuredBuffer<T,L> buffer); __intrinsic_op($(kIROp_StructuredBufferGetDimensions)) -[require(cpp_cuda_glsl_hlsl_metal_spirv, structuredbuffer_rw)] +[require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, structuredbuffer_rw)] uint2 __structuredBufferGetDimensions<T,L:IBufferDataLayout>(RasterizerOrderedStructuredBuffer<T,L> buffer); //@public: @@ -143,7 +143,7 @@ struct ByteAddressBuffer ///@param[out] dim The number of bytes in the buffer. [__readNone] [ForceInline] - [require(cpp_cuda_glsl_hlsl_metal_spirv, structuredbuffer)] + [require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, structuredbuffer)] void GetDimensions(out uint dim) { __target_switch @@ -151,9 +151,7 @@ struct ByteAddressBuffer case cpp: __intrinsic_asm ".GetDimensions"; case cuda: __intrinsic_asm ".GetDimensions"; case hlsl: __intrinsic_asm ".GetDimensions"; - case glsl: - case metal: - case spirv: + default: dim = __structuredBufferGetDimensions(__getEquivalentStructuredBuffer<uint>(this)).x*4; } } @@ -4922,7 +4920,7 @@ struct $(item.name) /// Get the number of bytes in the buffer. ///@param[out] dim The number of bytes in the buffer. [ForceInline] - [require(cpp_cuda_glsl_hlsl_spirv, structuredbuffer_rw)] + [require(cpp_cuda_glsl_hlsl_spirv_wgsl, structuredbuffer_rw)] void GetDimensions(out uint dim) { __target_switch @@ -4930,8 +4928,7 @@ struct $(item.name) case cpp: __intrinsic_asm ".GetDimensions"; case cuda: __intrinsic_asm ".GetDimensions"; case hlsl: __intrinsic_asm ".GetDimensions"; - case glsl: - case spirv: + default: dim = __structuredBufferGetDimensions(__getEquivalentStructuredBuffer<uint>(this)).x*4; } } @@ -5939,7 +5936,7 @@ struct $(item.name) /// @param stride The stride, in bytes, of each structure element. [__readNone] [ForceInline] - [require(cpp_cuda_glsl_hlsl_metal_spirv, structuredbuffer_rw)] + [require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, structuredbuffer_rw)] void GetDimensions( out uint numStructs, out uint stride) |
