diff options
Diffstat (limited to 'tests/bugs')
| -rw-r--r-- | tests/bugs/gh-3834.slang | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/bugs/gh-3834.slang b/tests/bugs/gh-3834.slang new file mode 100644 index 000000000..1f0b2d3ba --- /dev/null +++ b/tests/bugs/gh-3834.slang @@ -0,0 +1,33 @@ +//TEST:SIMPLE(filecheck=CHECK): -stage compute -entry computeMain -target glsl -allow-glsl +//TEST:SIMPLE(filecheck=CHECK): -stage compute -entry computeMain -target glsl -allow-glsl -DUSE_GENERIC + +// This tests an issue that "const" variable was losing the +// const-ness when they are in a generic function + +uniform sampler2D uniform_sampler2D; +RWStructuredBuffer<float> outputBuffer; + +#ifdef USE_GENERIC +__generic<T:__BuiltinArithmeticType> +#endif +vec4 MyFunc() +{ + //CHECK: const ivec2 offset0 + //CHECK: const ivec2 offset1 + const ivec2 offset0 = ivec2(0,0); + const ivec2 offset1 = ivec2(1,1); + const ivec2[4] offsets = { offset0, offset0, offset1, offset1 }; + return textureGatherOffsets(uniform_sampler2D, vec2(0), offsets); +} + +[numthreads(4, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ +#ifdef USE_GENERIC + vec4 result = MyFunc<float>(); +#else + vec4 result = MyFunc(); +#endif + + outputBuffer[0] = result[0]; +} |
