From 89758544c45a15e546a1eb08891e2787bb88de4a Mon Sep 17 00:00:00 2001 From: Tim Foley Date: Mon, 29 Jul 2019 14:55:04 -0700 Subject: Fix issue with outputting "static" in GLSL (#1006) This appears to be a regression introduced in #1001, and missed because none of our existing tests covered `static const` arrays on the GLSL/SPIR-V targets. The basic problem is that we cannot output a `static const` definition in GLSL because `static` is a reserved word and not a keyword. Instead for GLSL we just want a `const` array. This change makes the emission of `static` for global-scope constants key on the target language for code generation, and only emit it for HLSL, C, and C++. This change also adds a test case specifically for running Slang input that has a `static const` array on the Vulkan target. --- tests/bugs/glsl-static-const-array.slang | 17 +++++++++++++++++ tests/bugs/glsl-static-const-array.slang.expected.txt | 4 ++++ 2 files changed, 21 insertions(+) create mode 100644 tests/bugs/glsl-static-const-array.slang create mode 100644 tests/bugs/glsl-static-const-array.slang.expected.txt (limited to 'tests') diff --git a/tests/bugs/glsl-static-const-array.slang b/tests/bugs/glsl-static-const-array.slang new file mode 100644 index 000000000..fb573c690 --- /dev/null +++ b/tests/bugs/glsl-static-const-array.slang @@ -0,0 +1,17 @@ +// glsl-static-const-array.slang + +//TEST(compute):COMPARE_COMPUTE:-vk + +static const int gData[4] = +{ + 0xA, 0xB, 0xC, 0xD, +}; + +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out +RWStructuredBuffer gBuffer; + +[numthreads(4,1,1)] +void computeMain(uint3 tid : SV_DispatchThreadID) +{ + gBuffer[tid.x] = gData[tid.x]; +} diff --git a/tests/bugs/glsl-static-const-array.slang.expected.txt b/tests/bugs/glsl-static-const-array.slang.expected.txt new file mode 100644 index 000000000..8422d40f1 --- /dev/null +++ b/tests/bugs/glsl-static-const-array.slang.expected.txt @@ -0,0 +1,4 @@ +A +B +C +D -- cgit v1.2.3