diff options
| -rw-r--r-- | source/slang/slang-emit-c-like.cpp | 15 | ||||
| -rw-r--r-- | tests/bugs/glsl-static-const-array.slang | 17 | ||||
| -rw-r--r-- | tests/bugs/glsl-static-const-array.slang.expected.txt | 4 |
3 files changed, 35 insertions, 1 deletions
diff --git a/source/slang/slang-emit-c-like.cpp b/source/slang/slang-emit-c-like.cpp index d7930130e..c7b5b602b 100644 --- a/source/slang/slang-emit-c-like.cpp +++ b/source/slang/slang-emit-c-like.cpp @@ -982,7 +982,20 @@ void CLikeSourceEmitter::emitInstResultDecl(IRInst* inst) if(as<IRModuleInst>(inst->getParent())) { // "Ordinary" instructions at module scope are constants - m_writer->emit("static const "); + + switch (getSourceStyle()) + { + case SourceStyle::HLSL: + case SourceStyle::C: + case SourceStyle::CPP: + m_writer->emit("static "); + break; + + default: + break; + } + + m_writer->emit("const "); } emitType(type, getName(inst)); 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<int> 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 |
