From f114433debfba67cbe1db239b6e92278d41ed438 Mon Sep 17 00:00:00 2001 From: Yong He Date: Fri, 19 Jul 2024 11:49:42 -0700 Subject: Support parameter block in metal shader objects. (#4671) * Support parameter block in metal shader objects. * Ingore parameter block tests on devices without tier2 argument buffer. * Fix warning. * Fix texture subscript test. --------- Co-authored-by: Yong He --- tests/compute/entry-point-uniform-params.slang | 3 +-- tests/compute/parameter-block.slang | 2 +- tests/compute/texture-subscript.slang | 30 +++++++++++++++----------- 3 files changed, 19 insertions(+), 16 deletions(-) (limited to 'tests/compute') diff --git a/tests/compute/entry-point-uniform-params.slang b/tests/compute/entry-point-uniform-params.slang index 65da103b6..87a21a2e6 100644 --- a/tests/compute/entry-point-uniform-params.slang +++ b/tests/compute/entry-point-uniform-params.slang @@ -9,8 +9,7 @@ //TEST(compute):COMPARE_COMPUTE: -dx11 -shaderobj //TEST(compute):COMPARE_COMPUTE: -cuda -shaderobj //TEST(compute):COMPARE_COMPUTE: -cpu -shaderobj - - +//TEST(compute):COMPARE_COMPUTE: -metal -shaderobj struct Signs { diff --git a/tests/compute/parameter-block.slang b/tests/compute/parameter-block.slang index 27cfed716..2922f0813 100644 --- a/tests/compute/parameter-block.slang +++ b/tests/compute/parameter-block.slang @@ -2,7 +2,7 @@ //TEST(compute):COMPARE_COMPUTE:-cuda -shaderobj //TEST(compute):COMPARE_COMPUTE:-vk -shaderobj //TEST(compute):COMPARE_COMPUTE:-shaderobj -//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl +//TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl -render-features argument-buffer-tier-2 // Ensure that Slang `ParameterBlock` type is lowered // to HLSL in the fashion that we expect. diff --git a/tests/compute/texture-subscript.slang b/tests/compute/texture-subscript.slang index 9251f49f1..c15a0824b 100644 --- a/tests/compute/texture-subscript.slang +++ b/tests/compute/texture-subscript.slang @@ -2,7 +2,7 @@ //TEST:SIMPLE(filecheck=METALLIB): -target metallib -entry computeMain -stage compute // Metal lacks RWTexture GFX backend support. // Due to this, Metal compute test is disabled -//DISABLE_TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUF): -slang -output-using-type -shaderobj -mtl +//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUF): -slang -output-using-type -shaderobj -mtl //TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUF): -slang -output-using-type -shaderobj -vk //TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUF): -slang -output-using-type -shaderobj -vk -glsl @@ -28,18 +28,22 @@ RWStructuredBuffer outputBuffer; [numthreads(1,1,1)] void computeMain() { - outputTexture1D[0].xz = int2(1,2).xx; - outputTexture1D[1].x = int2(3,4).y; - - outputTexture2D[0].xz = int2(1,2).xx; - outputTexture2D[int2(0, 1)].x = int2(3,4).y; - - outputTexture3D[0].xz = int2(1,2).xx; - outputTexture3D[int3(0, 0, 1)].x = int2(3,4).y; - - outputTexture2DArray[0].xz = int2(1,2); - outputTexture2DArray[int3(0, 0, 1)].xz = int2(3,4); - + outputTexture1D[0].xz = int2(1, 2).xx; + AllMemoryBarrier(); + outputTexture1D[1].x = int2(3, 4).y; + AllMemoryBarrier(); + outputTexture2D[0].xz = int2(1, 2).xx; + AllMemoryBarrier(); + outputTexture2D[int2(0, 1)].x = int2(3, 4).y; + AllMemoryBarrier(); + outputTexture3D[0].xz = int2(1, 2).xx; + AllMemoryBarrier(); + outputTexture3D[int3(0, 0, 1)].x = int2(3, 4).y; + AllMemoryBarrier(); + outputTexture2DArray[0].xz = int2(1, 2); + AllMemoryBarrier(); + outputTexture2DArray[int3(0, 0, 1)].xz = int2(3, 4); + AllMemoryBarrier(); outputBuffer[0] = uint(true && all(outputTexture1D[0] == int4(1, 0, 1, 0)) == true && all(outputTexture1D[1] == int4(4, 0, 0, 0)) == true -- cgit v1.2.3