diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2020-08-03 15:46:16 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-08-03 15:46:16 -0400 |
| commit | 79ba9279becf480c9d92bb2faaede0e241f0b029 (patch) | |
| tree | 5e904295c6b0731fdfba0d17ab03ba54d5f92565 /tests | |
| parent | 9ac5c51ae1f0664a9dcb31392894e4f76bdbcf98 (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')
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 |
