summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDarren Wihandi <65404740+fairywreath@users.noreply.github.com>2025-01-08 22:50:57 -0500
committerGitHub <noreply@github.com>2025-01-08 19:50:57 -0800
commit2249d6ffb19e4db8580c76ccb04ab4ca3ddc8394 (patch)
treea5d975e79c60fe735a5d9f5948a5534e3a37ec5b /tests
parent63b8d9e1d0b0bba66f13013aa6b80bd9fab4036b (diff)
Add SampleCmpLevel intrinsics (#6004)
* add SampleCmpLevel intrinsics * update tests * fix typo * fix broken glsl test * refactor SampleCmpLevelZero * fix metallib test * fix broken test on dx12 --------- Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/cross-compile/glsl-samplecmplevelzero.slang10
-rw-r--r--tests/hlsl-intrinsic/texture-lod-shadow.slang8
-rw-r--r--tests/hlsl-intrinsic/texture/texture-intrinsics.slang27
-rw-r--r--tests/metal/texture-sampler-less.slang27
-rw-r--r--tests/metal/texture.slang31
-rw-r--r--tests/spirv/sampler-shadow.slang6
6 files changed, 98 insertions, 11 deletions
diff --git a/tests/cross-compile/glsl-samplecmplevelzero.slang b/tests/cross-compile/glsl-samplecmplevelzero.slang
index 556addf80..7ef1f28f3 100644
--- a/tests/cross-compile/glsl-samplecmplevelzero.slang
+++ b/tests/cross-compile/glsl-samplecmplevelzero.slang
@@ -1,12 +1,16 @@
//TEST:CROSS_COMPILE(filecheck=CHECK): -profile ps_5_0 -entry main -target glsl
-// CHECK: float {{.*}} = (textureLod(sampler2DShadow(shadowMap_0,sampler_0), ({{.*}}), 0));
-// CHECK: float {{.*}} = (textureLodOffset(sampler2DShadow(shadowMap_0,sampler_0), ({{.*}}), 0, (ivec2(1, 1))));
+// CHECK: float {{.*}} = (textureLod(sampler2DShadow(shadowMap_0,sampler_0), ({{.*}}), (0.0)));
+// CHECK: float {{.*}} = (textureLodOffset(sampler2DShadow(shadowMap_0,sampler_0), ({{.*}}), (0.0), (ivec2(1, 1))));
+// CHECK: float {{.*}} = (textureLod(sampler2DShadow(shadowMap_0,sampler_0), ({{.*}}), (1.5)));
+// CHECK: float {{.*}} = (textureLodOffset(sampler2DShadow(shadowMap_0,sampler_0), ({{.*}}), (1.5), (ivec2(2, 2))));
Texture2D shadowMap;
SamplerComparisonState sampler;
float4 main(float4 p : SV_POSITION)
{
return shadowMap.SampleCmpLevelZero(sampler, float2(0.0), 0.0)
- + shadowMap.SampleCmpLevelZero(sampler, float2(0.0), 0.0, int2(1,1));
+ + shadowMap.SampleCmpLevelZero(sampler, float2(0.0), 0.0, int2(1,1))
+ + shadowMap.SampleCmpLevel(sampler, float2(0.0), 0.0, 1.5)
+ + shadowMap.SampleCmpLevel(sampler, float2(0.0), 0.0, 1.5, int2(2,2));
}
diff --git a/tests/hlsl-intrinsic/texture-lod-shadow.slang b/tests/hlsl-intrinsic/texture-lod-shadow.slang
index bc78a9382..bfe2e10fc 100644
--- a/tests/hlsl-intrinsic/texture-lod-shadow.slang
+++ b/tests/hlsl-intrinsic/texture-lod-shadow.slang
@@ -6,10 +6,14 @@ RWStructuredBuffer<float4> result;
SamplerComparisonState s;
// CHECK: OpSourceExtension "GL_EXT_texture_shadow_lod"
-// CHECK: %{{[0-9]*}} = OpImageSampleDrefExplicitLod %float %{{[0-9]*}} %{{[0-9]*}} %float_0_5 Lod|ConstOffset %float_0 %{{[0-9]*}}
+// CHECK: %{{[0-9]*}} = OpImageSampleDrefExplicitLod %float %{{[0-9]*}} %{{[0-9]*}} %{{[0-9]*}} Lod|ConstOffset %float_0 %{{[0-9]*}}
+// CHECK: %{{[0-9]*}} = OpImageSampleDrefExplicitLod %float %{{[0-9]*}} %{{[0-9]*}} %{{[0-9]*}} Lod|ConstOffset %float_1_5 %{{[0-9]*}}
[numthreads(1,1,1)]
void computeMain()
{
result[0] = t2dArray.SampleCmpLevelZero(s, float3(1, 2, 3), 0.5, int2(0, 0));
-} \ No newline at end of file
+
+ float level = 1.5;
+ result[1] = t2dArray.SampleCmpLevel(s, float3(1, 2, 3), 0.5, level, int2(0, 0));
+}
diff --git a/tests/hlsl-intrinsic/texture/texture-intrinsics.slang b/tests/hlsl-intrinsic/texture/texture-intrinsics.slang
index 0543c71b2..e13389ccb 100644
--- a/tests/hlsl-intrinsic/texture/texture-intrinsics.slang
+++ b/tests/hlsl-intrinsic/texture/texture-intrinsics.slang
@@ -105,6 +105,25 @@ void computeMain(int3 dispatchThreadID: SV_DispatchThreadID)
#endif
/*
+ float Object.SampleCmpLevel().
+ These require SM 6.7 for dx12 but functional compute tests currently do not run with the cs_6_7,
+ hence only enable these for vk.
+ */
+#if defined(VK)
+ float level = 1.0;
+ val += t1D.SampleCmpLevel(shadowSampler, u, 0, level);
+ val += t2D.SampleCmpLevel(shadowSampler, float2(u, u), 0, level);
+ val += t1DArray.SampleCmpLevel(shadowSampler, float2(u, u), 0, level);
+ val += tCube.SampleCmpLevel(shadowSampler, normalize(float3(u, 1 - u, u)), 0, level);
+ val += t2DArray.SampleCmpLevel(shadowSampler, normalize(float3(u, 1 - u, u)), 0, level);
+ val += tCubeArray.SampleCmpLevel(shadowSampler, normalize(float4(u, 1-u, u, u)), 0, level);
+
+ // Offset variant
+ val += t1D.SampleCmpLevel(shadowSampler, u, 0, level, 0);
+ val += t2D.SampleCmpLevel(shadowSampler, float2(u, u), 0, level, int2(0, 0));
+#endif
+
+ /*
void Object.GetDimensions()
*/
t1D.GetDimensions(width);
@@ -353,7 +372,7 @@ void computeMain(int3 dispatchThreadID: SV_DispatchThreadID)
// DX12CS6: 377
// DX12CS6: 377
// DX12CS6: 377
-// VK: 351
-// VK: 351
-// VK: 351
-// VK: 351 \ No newline at end of file
+// VK: 359
+// VK: 359
+// VK: 359
+// VK: 359
diff --git a/tests/metal/texture-sampler-less.slang b/tests/metal/texture-sampler-less.slang
index 188b15469..78d092e17 100644
--- a/tests/metal/texture-sampler-less.slang
+++ b/tests/metal/texture-sampler-less.slang
@@ -448,6 +448,33 @@ bool TEST_texture_float()
// METALLIB: call {{.*}}.sample_compare_depth_2d.f32(
&& float(1) == d2D.SampleCmpLevelZero(float2(u2, u), 0, int2(0, 0))
+ // ===================================
+ // float SampleCmpLevel()
+ // ===================================
+
+ // METAL: d2D{{.*}}.sample_compare(
+ // METALLIB: call {{.*}}.sample_compare_depth_2d.f32(
+ && float(1) == d2D.SampleCmpLevel(float2(u, u), 0, 1.0)
+
+ // METAL: d2DArray{{.*}}.sample_compare(
+ // METALLIB: call {{.*}}.sample_compare_depth_2d_array.f32(
+ && float(1) == d2DArray.SampleCmpLevel(float3(u, u, 0), 0, 1.0)
+
+ // METAL: dCube{{.*}}.sample_compare(
+ // METALLIB: call {{.*}}.sample_compare_depth_cube.f32(
+ && float(1) == dCube.SampleCmpLevel(normalize(float3(u, 1 - u, u)), 0, 1.0)
+
+ // METAL: dCubeArray{{.*}}.sample_compare(
+ // METALLIB: call {{.*}}.sample_compare_depth_cube_array.f32(
+ && float(1) == dCubeArray.SampleCmpLevel(float4(normalize(float3(u, 1-u, u)), 0), 0, 1.0)
+
+ // Offset variant
+
+ // METAL: d2D{{.*}}.sample_compare(
+ // METALLIB: call {{.*}}.sample_compare_depth_2d.f32(
+ && float(1) == d2D.SampleCmpLevel(float2(u2, u), 0, 1.0, int2(0, 0))
+
+
// ==================================
// vector<T,4> Gather()
// ==================================
diff --git a/tests/metal/texture.slang b/tests/metal/texture.slang
index 37c8fa286..feb0b4738 100644
--- a/tests/metal/texture.slang
+++ b/tests/metal/texture.slang
@@ -3,7 +3,7 @@
//TEST:SIMPLE(filecheck=HLSL): -stage compute -entry computeMain -target hlsl -DEXCLUDE_INTEGER_TYPE
//TEST:SIMPLE(filecheck=SPIR): -stage compute -entry computeMain -target spirv -emit-spirv-directly -DEXCLUDE_HALF_TYPE -DEXCLUDE_SHORT_TYPE
-//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=FUNCTIONAL):-slang -compute -dx12 -profile cs_6_6 -use-dxil -shaderobj -output-using-type -xslang -DEXCLUDE_INTEGER_TYPE
+//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=FUNCTIONAL):-slang -compute -dx12 -profile cs_6_6 -use-dxil -shaderobj -output-using-type -xslang -DEXCLUDE_INTEGER_TYPE -xslang -DEXCLUDE_SM_6_7
//TEST(compute, vulkan):COMPARE_COMPUTE_EX(filecheck-buffer=FUNCTIONAL):-vk -emit-spirv-directly -compute -shaderobj -output-using-type -render-feature hardware-device -xslang -DEXCLUDE_HALF_TYPE -xslang -DEXCLUDE_SHORT_TYPE
//TEST_INPUT: ubuffer(data=[0], stride=4):out,name outputBuffer
@@ -567,6 +567,35 @@ bool TEST_texture(
// METALLIB: call {{.*}}.sample_compare_depth_2d.f32(
&& float(0) == d2D.SampleCmpLevelZero(shadowSampler, float2(u2, u), 0, int2(0, 0))
+ // ===================================
+ // float SampleCmpLevel()
+ // ===================================
+
+ // These require SM 6.7 for dx12 but functional compute tests currently do not run with the cs_6_7.
+#if !defined(EXCLUDE_SM_6_7)
+ // METAL: d2D{{.*}}.sample_compare(
+ // METALLIB: call {{.*}}.sample_compare_depth_2d.f32(
+ && float(0) == d2D.SampleCmpLevel(shadowSampler, float2(u, u), 0, 0.0)
+
+ // METAL: d2DArray{{.*}}.sample_compare(
+ // METALLIB: call {{.*}}.sample_compare_depth_2d_array.f32(
+ && float(0) == d2DArray.SampleCmpLevel(shadowSampler, float3(u, u, 0), 0, 0.0)
+
+ // METAL: dCube{{.*}}.sample_compare(
+ // METALLIB: call {{.*}}.sample_compare_depth_cube.f32(
+ && float(0) == dCube.SampleCmpLevel(shadowSampler, normalize(float3(u, 1 - u, u)), 0, 0.0)
+
+ // METAL: dCubeArray{{.*}}.sample_compare(
+ // METALLIB: call {{.*}}.sample_compare_depth_cube_array.f32(
+ && float(0) == dCubeArray.SampleCmpLevel(shadowSampler, float4(normalize(float3(u, 1-u, u)), 0), 0, 0.0)
+
+ // Offset variant
+
+ // METAL: d2D{{.*}}.sample_compare(
+ // METALLIB: call {{.*}}.sample_compare_depth_2d.f32(
+ && float(0) == d2D.SampleCmpLevel(shadowSampler, float2(u2, u), 0, 0.0, int2(0, 0))
+#endif
+
// ==================================
// vector<T,4> Gather()
// ==================================
diff --git a/tests/spirv/sampler-shadow.slang b/tests/spirv/sampler-shadow.slang
index 89bdbc405..35b96e746 100644
--- a/tests/spirv/sampler-shadow.slang
+++ b/tests/spirv/sampler-shadow.slang
@@ -1,6 +1,7 @@
//TEST:SIMPLE(filecheck=CHECK): -target spirv
// CHECK: OpImageSampleDrefExplicitLod
+// CHECK: OpImageSampleDrefExplicitLod
Sampler2DShadow ss;
@@ -10,4 +11,7 @@ RWStructuredBuffer<float> output;
void computeMain()
{
output[0] = ss.SampleCmpLevelZero(float2(0.0), 0.5);
-} \ No newline at end of file
+
+ float level = 1.5;
+ output[1] = ss.SampleCmpLevel(float2(0.0), 0.5, level);
+}