From 8683b85c0494db99feb08b6efcdc26dfe006729f Mon Sep 17 00:00:00 2001 From: Darren Wihandi <65404740+fairywreath@users.noreply.github.com> Date: Fri, 16 May 2025 13:42:59 -0400 Subject: Fix HLSL ByteAddressBuffer Load* parameter integer type (#7117) * Fix HLSL ByteAddressBuffer Load* parameter integer type * Fix tests * Fix load with alignment function signature clash * Fix LoadAligned tests --- source/slang/hlsl.meta.slang | 74 ++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 37 deletions(-) (limited to 'source') diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 6fb3af7fd..99f83776e 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -180,7 +180,7 @@ struct ByteAddressBuffer { case hlsl: __intrinsic_asm ".Load"; default: - return __byteAddressBufferLoad(this, location, 0); + return __byteAddressBufferLoad(this, uint(location), 0); } } @@ -213,7 +213,7 @@ struct ByteAddressBuffer [__readNone] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer)] - uint2 Load2(int location) + uint2 Load2(uint location) { __target_switch { @@ -226,7 +226,7 @@ struct ByteAddressBuffer [__readNone] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer)] - uint2 Load2(int location, int alignment) + uint2 Load2Aligned(uint location, uint alignment) { __target_switch { @@ -239,7 +239,7 @@ struct ByteAddressBuffer [__readNone] [ForceInline] [require(hlsl, byteaddressbuffer)] - uint2 Load2(int location, out uint status) + uint2 Load2(uint location, out uint status) { __target_switch { @@ -255,7 +255,7 @@ struct ByteAddressBuffer [__readNone] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer)] - uint2 Load2Aligned(int location) + uint2 Load2Aligned(uint location) { __target_switch { @@ -282,7 +282,7 @@ struct ByteAddressBuffer [__readNone] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer)] - uint3 Load3(int location) + uint3 Load3(uint location) { __target_switch { @@ -295,7 +295,7 @@ struct ByteAddressBuffer [__readNone] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer)] - uint3 Load3(int location, int alignment) + uint3 Load3Aligned(uint location, uint alignment) { __target_switch { @@ -308,7 +308,7 @@ struct ByteAddressBuffer [__readNone] [ForceInline] [require(hlsl, byteaddressbuffer)] - uint3 Load3(int location, out uint status) + uint3 Load3(uint location, out uint status) { __target_switch { @@ -323,7 +323,7 @@ struct ByteAddressBuffer [__readNone] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer)] - uint3 Load3Aligned(int location) + uint3 Load3Aligned(uint location) { __target_switch { @@ -349,7 +349,7 @@ struct ByteAddressBuffer [__readNone] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer)] - uint4 Load4(int location) + uint4 Load4(uint location) { __target_switch { @@ -362,7 +362,7 @@ struct ByteAddressBuffer [__readNone] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer)] - uint4 Load4(int location, int alignment) + uint4 Load4Aligned(uint location, uint alignment) { __target_switch { @@ -375,7 +375,7 @@ struct ByteAddressBuffer [__readNone] [ForceInline] [require(hlsl, byteaddressbuffer)] - uint4 Load4(int location, out uint status) + uint4 Load4(uint location, out uint status) { __target_switch { @@ -390,7 +390,7 @@ struct ByteAddressBuffer [__readNone] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer)] - uint4 Load4Aligned(int location) + uint4 Load4Aligned(uint location) { __target_switch { @@ -402,14 +402,14 @@ struct ByteAddressBuffer [__readNone] [ForceInline] - T Load(int location) + T Load(uint location) { return __byteAddressBufferLoad(this, location, 0); } [__readNone] [ForceInline] - T Load(int location, int alignment) + T LoadAligned(uint location, uint alignment) { return __byteAddressBufferLoad(this, location, alignment); } @@ -421,7 +421,7 @@ struct ByteAddressBuffer ///Currently, this function only supports when `T` is scalar, vector or matrix type. [__readNone] [ForceInline] - T LoadAligned(int location) + T LoadAligned(uint location) { return __byteAddressBufferLoad(this, location, __naturalStrideOf()); } @@ -4785,23 +4785,23 @@ uint64_t __asuint64(uint2 i) __intrinsic_op($(kIROp_ByteAddressBufferLoad)) [require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, byteaddressbuffer)] -T __byteAddressBufferLoad(ByteAddressBuffer buffer, int offset, int alignment); +T __byteAddressBufferLoad(ByteAddressBuffer buffer, uint offset, uint alignment); __intrinsic_op($(kIROp_ByteAddressBufferLoad)) [require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, byteaddressbuffer_rw)] -T __byteAddressBufferLoad(RWByteAddressBuffer buffer, int offset, int alignment); +T __byteAddressBufferLoad(RWByteAddressBuffer buffer, uint offset, uint alignment); __intrinsic_op($(kIROp_ByteAddressBufferLoad)) [require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, byteaddressbuffer_rw)] -T __byteAddressBufferLoad(RasterizerOrderedByteAddressBuffer buffer, int offset, int alignment); +T __byteAddressBufferLoad(RasterizerOrderedByteAddressBuffer buffer, uint offset, uint alignment); __intrinsic_op($(kIROp_ByteAddressBufferStore)) [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer_rw)] -void __byteAddressBufferStore(RWByteAddressBuffer buffer, int offset, int alignment, T value); +void __byteAddressBufferStore(RWByteAddressBuffer buffer, uint offset, uint alignment, T value); __intrinsic_op($(kIROp_ByteAddressBufferStore)) [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer_rw)] -void __byteAddressBufferStore(RasterizerOrderedByteAddressBuffer buffer, int offset, int alignment, T value); +void __byteAddressBufferStore(RasterizerOrderedByteAddressBuffer buffer, uint offset, uint alignment, T value); __intrinsic_op($(kIROp_GetUntypedBufferPtr)) [require(spirv, byteaddressbuffer)] @@ -5053,7 +5053,7 @@ struct $(item.name) { case hlsl: __intrinsic_asm ".Load"; default: - return __byteAddressBufferLoad(this, location, 0); + return __byteAddressBufferLoad(this, uint(location), 0); } } @@ -5086,7 +5086,7 @@ struct $(item.name) [__NoSideEffect] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer_rw)] - uint2 Load2(int location) + uint2 Load2(uint location) { __target_switch { @@ -5099,7 +5099,7 @@ struct $(item.name) [__NoSideEffect] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer_rw)] - uint2 Load2(int location, int alignment) + uint2 Load2Aligned(uint location, uint alignment) { __target_switch { @@ -5116,7 +5116,7 @@ struct $(item.name) [__NoSideEffect] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer_rw)] - uint2 Load2Aligned(int location) + uint2 Load2Aligned(uint location) { __target_switch { @@ -5129,7 +5129,7 @@ struct $(item.name) [__NoSideEffect] [ForceInline] [require(hlsl, byteaddressbuffer_rw)] - uint2 Load2(int location, out uint status) + uint2 Load2(uint location, out uint status) { __target_switch { @@ -5154,7 +5154,7 @@ struct $(item.name) [__NoSideEffect] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer_rw)] - uint3 Load3(int location) + uint3 Load3(uint location) { __target_switch { @@ -5167,7 +5167,7 @@ struct $(item.name) [__NoSideEffect] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer_rw)] - uint3 Load3(int location, int alignment) + uint3 Load3Aligned(uint location, uint alignment) { __target_switch { @@ -5184,7 +5184,7 @@ struct $(item.name) [__NoSideEffect] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer_rw)] - uint3 Load3Aligned(int location) + uint3 Load3Aligned(uint location) { __target_switch { @@ -5197,7 +5197,7 @@ struct $(item.name) [__NoSideEffect] [ForceInline] [require(hlsl, byteaddressbuffer_rw)] - uint3 Load3(int location, out uint status) + uint3 Load3(uint location, out uint status) { __target_switch { @@ -5221,7 +5221,7 @@ struct $(item.name) [__NoSideEffect] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer_rw)] - uint4 Load4(int location) + uint4 Load4(uint location) { __target_switch { @@ -5234,7 +5234,7 @@ struct $(item.name) [__NoSideEffect] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer_rw)] - uint4 Load4(int location, int alignment) + uint4 Load4Aligned(uint location, uint alignment) { __target_switch { @@ -5251,7 +5251,7 @@ struct $(item.name) [__NoSideEffect] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer_rw)] - uint4 Load4Aligned(int location) + uint4 Load4Aligned(uint location) { __target_switch { @@ -5264,7 +5264,7 @@ struct $(item.name) [__NoSideEffect] [ForceInline] [require(hlsl, byteaddressbuffer_rw)] - uint4 Load4(int location, out uint status) + uint4 Load4(uint location, out uint status) { __target_switch { @@ -5275,7 +5275,7 @@ struct $(item.name) [__NoSideEffect] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer_rw)] - T Load(int location) + T Load(uint location) { return __byteAddressBufferLoad(this, location, 0); } @@ -5283,7 +5283,7 @@ struct $(item.name) [__NoSideEffect] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer_rw)] - T Load(int location, int alignment) + T LoadAligned(uint location, uint alignment) { return __byteAddressBufferLoad(this, location, alignment); } @@ -5296,7 +5296,7 @@ struct $(item.name) [__NoSideEffect] [ForceInline] [require(cpp_cuda_glsl_hlsl_metal_spirv, byteaddressbuffer_rw)] - T LoadAligned(int location) + T LoadAligned(uint location) { return __byteAddressBufferLoad(this, location, __naturalStrideOf()); } -- cgit v1.2.3