summaryrefslogtreecommitdiff
path: root/source/slang/hlsl.meta.slang
diff options
context:
space:
mode:
authorDarren Wihandi <65404740+fairywreath@users.noreply.github.com>2025-03-14 18:32:37 -0400
committerGitHub <noreply@github.com>2025-03-14 15:32:37 -0700
commitc8c9e424e91e72e718529ed76df14f7586624cd6 (patch)
treeb9846efaec0dc5cf96ddbdceb4362020761374d7 /source/slang/hlsl.meta.slang
parentc2e8f9c1ebe316d7f3b2932fa1c24065fdf83d37 (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.slang19
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)