summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2020-08-03 15:46:16 -0400
committerGitHub <noreply@github.com>2020-08-03 15:46:16 -0400
commit79ba9279becf480c9d92bb2faaede0e241f0b029 (patch)
tree5e904295c6b0731fdfba0d17ab03ba54d5f92565 /tests
parent9ac5c51ae1f0664a9dcb31392894e4f76bdbcf98 (diff)
First pass support for Sampler Feedback (#1470)
* Add the Feedback texture types. Depreciate SLANG_RESOURCE_EXT_SHAPE_MASK. * Starting point to test sampler feedback. * WIP on FeedbackSampler. * Use __target_intrinsic to override the output of sampler feedback types. * Use newer generic syntax for FeedbackTexture. * Reflects Feedback type. * SLANG_TYPE_KIND_TEXTURE_FEEDBACK -> SLANG_TYPE_KIND_FEEDBACK * Added reflection test. * Reneable issue with generics in sampler-feedback-basic.slang * Add methods to FeedbackTexture2D/Array. Make test cover test cases. * Sampler feedback produces DXC code. * Disabled Sampler feedback test - as requires newer version of DXC. * Fix bug in reflection tool output. * Fix problem with direct-spirv-emit.slang.expected due to update to glslang. * Fix direct-spirv-emit.slang * Use SLANG_RESOURCE_EXT_SHAPE_MASK again * Make Feedback be emitted as a textue type prefix. Co-authored-by: Tim Foley <tfoleyNV@users.noreply.github.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/hlsl-intrinsic/sampler-feedback/sampler-feedback-basic.slang46
-rw-r--r--tests/hlsl-intrinsic/sampler-feedback/sampler-feedback-basic.slang.expected110
-rw-r--r--tests/hlsl-intrinsic/sampler-feedback/sampler-feedback-basic.slang.hlsl43
3 files changed, 199 insertions, 0 deletions
diff --git a/tests/hlsl-intrinsic/sampler-feedback/sampler-feedback-basic.slang b/tests/hlsl-intrinsic/sampler-feedback/sampler-feedback-basic.slang
new file mode 100644
index 000000000..9e707b229
--- /dev/null
+++ b/tests/hlsl-intrinsic/sampler-feedback/sampler-feedback-basic.slang
@@ -0,0 +1,46 @@
+//TEST:REFLECTION: -entry main -stage fragment -profile sm_6_5 -target hlsl
+//DISABLE_TEST:CROSS_COMPILE: -entry main -stage fragment -profile sm_6_5 -target dxil-assembly
+
+FeedbackTexture2D<SAMPLER_FEEDBACK_MIN_MIP> feedbackMinMip;
+FeedbackTexture2D<SAMPLER_FEEDBACK_MIP_REGION_USED> feedbackMipRegionUsed;
+FeedbackTexture2DArray<SAMPLER_FEEDBACK_MIN_MIP> feedbackMinMipArray;
+FeedbackTexture2DArray<SAMPLER_FEEDBACK_MIP_REGION_USED> feebackMipRegionUsedArray;
+
+Texture2D<float> tex2D;
+Texture2DArray<float> tex2DArray;
+SamplerState samp;
+
+float4 main() : SV_Target
+{
+ float2 coords2D = float2(1, 2);
+ float3 coords2DArray = float3(1, 2, 3);
+
+ float clamp = 4;
+ float bias = 0.5F;
+ float lod = 6;
+ float2 ddx = float2(1.0F / 32, 2.0F / 32);
+ float2 ddy = float2(3.0F / 32, 4.0F / 32);
+
+ // Clamped
+ feedbackMinMip.WriteSamplerFeedback(tex2D, samp, coords2D, clamp);
+
+ feedbackMinMip.WriteSamplerFeedbackBias(tex2D, samp, coords2D, bias, clamp);
+ feedbackMinMip.WriteSamplerFeedbackGrad(tex2D, samp, coords2D, ddx, ddy, clamp);
+
+ // Level
+ feedbackMinMip.WriteSamplerFeedbackLevel(tex2D, samp, coords2D, lod);
+
+ // No Clamp
+ feedbackMinMip.WriteSamplerFeedback(tex2D, samp, coords2D );
+ feedbackMinMip.WriteSamplerFeedbackBias(tex2D, samp, coords2D, bias);
+ feedbackMinMip.WriteSamplerFeedbackGrad(tex2D, samp, coords2D, ddx, ddy);
+
+ // Array
+ feedbackMinMipArray.WriteSamplerFeedback(tex2DArray, samp, coords2DArray);
+ feebackMipRegionUsedArray.WriteSamplerFeedback(tex2DArray, samp, coords2DArray);
+
+ // Using feedbackMipRegionUsed
+ feedbackMipRegionUsed.WriteSamplerFeedback(tex2D, samp, coords2D);
+
+ return float4(1, 2, 3, 4);
+}
diff --git a/tests/hlsl-intrinsic/sampler-feedback/sampler-feedback-basic.slang.expected b/tests/hlsl-intrinsic/sampler-feedback/sampler-feedback-basic.slang.expected
new file mode 100644
index 000000000..1d4dda6b0
--- /dev/null
+++ b/tests/hlsl-intrinsic/sampler-feedback/sampler-feedback-basic.slang.expected
@@ -0,0 +1,110 @@
+result code = 0
+standard error = {
+}
+standard output = {
+{
+ "parameters": [
+ {
+ "name": "feedbackMinMip",
+ "binding": {"kind": "unorderedAccess", "index": 0},
+ "type": {
+ "kind": "resource",
+ "baseShape": "texture2D",
+ "feedback": true,
+ "access": "write",
+ "resultType": {
+ "kind": "Feedback",
+ "name": "SAMPLER_FEEDBACK_MIN_MIP"
+ }
+ }
+ },
+ {
+ "name": "feedbackMipRegionUsed",
+ "binding": {"kind": "unorderedAccess", "index": 1},
+ "type": {
+ "kind": "resource",
+ "baseShape": "texture2D",
+ "feedback": true,
+ "access": "write",
+ "resultType": {
+ "kind": "Feedback",
+ "name": "SAMPLER_FEEDBACK_MIP_REGION_USED"
+ }
+ }
+ },
+ {
+ "name": "feedbackMinMipArray",
+ "binding": {"kind": "unorderedAccess", "index": 2},
+ "type": {
+ "kind": "resource",
+ "baseShape": "texture2D",
+ "array": true,
+ "feedback": true,
+ "access": "write",
+ "resultType": {
+ "kind": "Feedback",
+ "name": "SAMPLER_FEEDBACK_MIN_MIP"
+ }
+ }
+ },
+ {
+ "name": "feebackMipRegionUsedArray",
+ "binding": {"kind": "unorderedAccess", "index": 3},
+ "type": {
+ "kind": "resource",
+ "baseShape": "texture2D",
+ "array": true,
+ "feedback": true,
+ "access": "write",
+ "resultType": {
+ "kind": "Feedback",
+ "name": "SAMPLER_FEEDBACK_MIP_REGION_USED"
+ }
+ }
+ },
+ {
+ "name": "tex2D",
+ "binding": {"kind": "shaderResource", "index": 0},
+ "type": {
+ "kind": "resource",
+ "baseShape": "texture2D"
+ }
+ },
+ {
+ "name": "tex2DArray",
+ "binding": {"kind": "shaderResource", "index": 1},
+ "type": {
+ "kind": "resource",
+ "baseShape": "texture2D",
+ "array": true
+ }
+ },
+ {
+ "name": "samp",
+ "binding": {"kind": "samplerState", "index": 0},
+ "type": {
+ "kind": "samplerState"
+ }
+ }
+ ],
+ "entryPoints": [
+ {
+ "name": "main",
+ "stage:": "fragment",
+ "result:": {
+ "stage": "fragment",
+ "binding": {"kind": "varyingOutput", "index": 0},
+ "semanticName": "SV_TARGET",
+ "type": {
+ "kind": "vector",
+ "elementCount": 4,
+ "elementType": {
+ "kind": "scalar",
+ "scalarType": "float32"
+ }
+ }
+ }
+ }
+ ]
+}
+}
diff --git a/tests/hlsl-intrinsic/sampler-feedback/sampler-feedback-basic.slang.hlsl b/tests/hlsl-intrinsic/sampler-feedback/sampler-feedback-basic.slang.hlsl
new file mode 100644
index 000000000..b72991503
--- /dev/null
+++ b/tests/hlsl-intrinsic/sampler-feedback/sampler-feedback-basic.slang.hlsl
@@ -0,0 +1,43 @@
+FeedbackTexture2D<SAMPLER_FEEDBACK_MIN_MIP> feedbackMinMip_0;
+FeedbackTexture2D<SAMPLER_FEEDBACK_MIP_REGION_USED> feedbackMipRegionUsed_0;
+FeedbackTexture2DArray<SAMPLER_FEEDBACK_MIN_MIP> feedbackMinMipArray_0;
+FeedbackTexture2DArray<SAMPLER_FEEDBACK_MIP_REGION_USED> feebackMipRegionUsedArray_0;
+
+Texture2D<float> tex2D_0;
+Texture2DArray<float> tex2DArray_0;
+SamplerState samp_0;
+
+float4 main() : SV_Target
+{
+ float2 coords2D = float2(1, 2);
+ float3 coords2DArray = float3(1, 2, 3);
+
+ float clamp = 4;
+ float bias = 0.5F;
+ float lod = 6;
+ float2 ddx = float2(1.0F / 32, 2.0F / 32);
+ float2 ddy = float2(3.0F / 32, 4.0F / 32);
+
+ // Clamped
+ feedbackMinMip_0.WriteSamplerFeedback(tex2D_0, samp_0, coords2D, clamp);
+
+ feedbackMinMip_0.WriteSamplerFeedbackBias(tex2D_0, samp_0, coords2D, bias, clamp);
+ feedbackMinMip_0.WriteSamplerFeedbackGrad(tex2D_0, samp_0, coords2D, ddx, ddy, clamp);
+
+ // Level
+ feedbackMinMip_0.WriteSamplerFeedbackLevel(tex2D_0, samp_0, coords2D, lod);
+
+ // No Clamp
+ feedbackMinMip_0.WriteSamplerFeedback(tex2D_0, samp_0, coords2D );
+ feedbackMinMip_0.WriteSamplerFeedbackBias(tex2D_0, samp_0, coords2D, bias);
+ feedbackMinMip_0.WriteSamplerFeedbackGrad(tex2D_0, samp_0, coords2D, ddx, ddy);
+
+ // Array
+ feedbackMinMipArray_0.WriteSamplerFeedback(tex2DArray_0, samp_0, coords2DArray);
+ feebackMipRegionUsedArray_0.WriteSamplerFeedback(tex2DArray_0, samp_0, coords2DArray);
+
+ // Using feedbackMipRegionUsed
+ feedbackMipRegionUsed_0.WriteSamplerFeedback(tex2D_0, samp_0, coords2D);
+
+ return float4(1, 2, 3, 4);
+} \ No newline at end of file