Fix Block decorations in 8-bit storage tests
authorJason Ekstrand <jason.ekstrand@intel.com>
Sat, 15 Dec 2018 06:02:37 +0000 (00:02 -0600)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Thu, 20 Dec 2018 08:10:12 +0000 (03:10 -0500)
The Vulkan environment spec allows two types of SSBO declarations:

 - Storage class of Uniform with the BufferBlock decoration
 - Storage class of StorageBuffer with the Block decoration

All of the 8-bit storage tests, as far as I can see, have chosen to use
the StorageBuffer storage class.  However, most of the SSBO declarations
are missing the Block decoration entirely.  A few mistakenly have a
BufferBlock decoration.

Affects:

dEQP-VK.spirv_assembly.instruction.graphics.8bit_storage.*

Components: Vulkan

VK-GL-CTS issue: 1519
Change-Id: Id78cae9c1813cd04daa894779aa3fbec57240eb8

external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsm8bitStorageTests.cpp

index 6bb4fa5..9fe681f 100644 (file)
@@ -1042,6 +1042,8 @@ void addCompute8bitStorage32To8Group (tcu::TestCaseGroup* group)
 
                "${stride}"
 
+               "OpDecorate %SSBO32 Block\n"
+               "OpDecorate %SSBO8 Block\n"
                "OpMemberDecorate %SSBO32 0 Offset 0\n"
                "OpMemberDecorate %SSBO8 0 Offset 0\n"
                "OpDecorate %ssbo32 DescriptorSet 0\n"
@@ -1199,6 +1201,8 @@ void addCompute8bitUniform8To32Group (tcu::TestCaseGroup* group)
 
                "${stride}"
 
+               "OpDecorate %SSBO32 Block\n"
+               "OpDecorate %SSBO8 Block\n"
                "OpMemberDecorate %SSBO32 0 Offset 0\n"
                "OpMemberDecorate %SSBO8 0 Offset 0\n"
                "OpDecorate %SSBO8 ${storage}\n"
@@ -1356,6 +1360,7 @@ void addCompute8bitStoragePushConstant8To32Group (tcu::TestCaseGroup* group)
                "${stride}"
 
                "OpDecorate %PC8 Block\n"
+               "OpDecorate %SSBO32 Block\n"
                "OpMemberDecorate %PC8 0 Offset 0\n"
                "OpMemberDecorate %SSBO32 0 Offset 0\n"
                "OpDecorate %ssbo32 DescriptorSet 0\n"
@@ -1518,6 +1523,8 @@ void addCompute8bitStorage16To8Group (tcu::TestCaseGroup* group)
 
                "${stride}"
 
+               "OpDecorate %SSBO16 Block\n"
+               "OpDecorate %SSBO8 Block\n"
                "OpMemberDecorate %SSBO16 0 Offset 0\n"
                "OpMemberDecorate %SSBO8 0 Offset 0\n"
                "OpDecorate %ssbo16 DescriptorSet 0\n"
@@ -1673,6 +1680,8 @@ void addCompute8bitUniform8To16Group (tcu::TestCaseGroup* group)
 
                "${stride}"
 
+               "OpDecorate %SSBO16 Block\n"
+               "OpDecorate %SSBO8 Block\n"
                "OpMemberDecorate %SSBO16 0 Offset 0\n"
                "OpMemberDecorate %SSBO8 0 Offset 0\n"
                "OpDecorate %SSBO8 ${storage}\n"
@@ -1834,6 +1843,7 @@ void addCompute8bitStoragePushConstant8To16Group (tcu::TestCaseGroup* group)
                "${stride}"
 
                "OpDecorate %PC8 Block\n"
+               "OpDecorate %SSBO16 Block\n"
                "OpMemberDecorate %PC8 0 Offset 0\n"
                "OpMemberDecorate %SSBO16 0 Offset 0\n"
                "OpDecorate %ssbo16 DescriptorSet 0\n"
@@ -1996,6 +2006,8 @@ void addCompute8bitStorageBuffer8To8Group (tcu::TestCaseGroup* group)
                        << "OpExecutionMode %main LocalSize 1 1 1\n"
                        << "OpDecorate %id BuiltIn GlobalInvocationId\n"
                        << "OpDecorate %i8arr ArrayStride 1\n"
+                       << "OpDecorate %SSBO_IN Block\n"
+                       << "OpDecorate %SSBO_OUT Block\n"
                        << "OpMemberDecorate %SSBO_IN 0 Coherent\n"
                        << "OpMemberDecorate %SSBO_OUT 0 Coherent\n"
                        << "OpMemberDecorate %SSBO_IN 0 Offset 0\n"
@@ -2079,7 +2091,8 @@ void addCompute8bitStorageUniform8StructTo32StructGroup (tcu::TestCaseGroup* gro
                "\n"
                "OpMemberDecorate %SSBO_IN 0 Offset 0\n"
                "OpMemberDecorate %SSBO_OUT 0 Offset 0\n"
-               "OpDecorate %SSBO_IN ${storage}\n"
+               "OpDecorate %SSBO_IN Block\n"
+               "OpDecorate %SSBO_OUT Block\n"
                "OpDecorate %ssboIN DescriptorSet 0\n"
                "OpDecorate %ssboOUT DescriptorSet 0\n"
                "OpDecorate %ssboIN Binding 0\n"
@@ -2260,7 +2273,6 @@ void addCompute8bitStorageUniform8StructTo32StructGroup (tcu::TestCaseGroup* gro
                string                                  testName        = string(CAPABILITIES[UNIFORM_AND_STORAGEBUFFER_TEST].name);
 
                specs["capability"]             = CAPABILITIES[UNIFORM_AND_STORAGEBUFFER_TEST].cap;
-               specs["storage"]                = CAPABILITIES[UNIFORM_AND_STORAGEBUFFER_TEST].decor;
                specs["stridei8"]               = getStructShaderComponet(SHADERTEMPLATE_STRIDE8BIT_STD140);
                specs["stridei32"]              = getStructShaderComponet(SHADERTEMPLATE_STRIDE32BIT_STD430);
                specs["32Storage"]              = "StorageBuffer";
@@ -2300,6 +2312,7 @@ void addCompute8bitStorageUniform32StructTo8StructGroup (tcu::TestCaseGroup* gro
                "OpMemberDecorate %SSBO_IN 0 Offset 0\n"
                "OpMemberDecorate %SSBO_OUT 0 Offset 0\n"
                "OpDecorate %SSBO_IN Block\n"
+               "OpDecorate %SSBO_OUT Block\n"
                "OpDecorate %ssboIN DescriptorSet 0\n"
                "OpDecorate %ssboOUT DescriptorSet 0\n"
                "OpDecorate %ssboIN Binding 0\n"
@@ -2522,11 +2535,12 @@ void addCompute8bitStorage8bitStructMixedTypesGroup (tcu::TestCaseGroup* group)
                "${OutOffsets}"
                "${InOffsets}"
                "\n"//SSBO IN
+               "OpDecorate %SSBO_IN Block\n"
                "OpMemberDecorate %SSBO_IN 0 Offset 0\n"
                "OpDecorate %ssboIN DescriptorSet 0\n"
-               "${inSSBODecor}"
                "OpDecorate %ssboIN Binding 0\n"
                "\n"//SSBO OUT
+               "OpDecorate %SSBO_OUT Block\n"
                "OpMemberDecorate %SSBO_OUT 0 Offset 0\n"
                "OpDecorate %ssboOUT DescriptorSet 0\n"
                "OpDecorate %ssboOUT Binding 1\n"
@@ -2712,7 +2726,6 @@ void addCompute8bitStorage8bitStructMixedTypesGroup (tcu::TestCaseGroup* group)
                                                                "%v4i32inPtr  = OpTypePointer Uniform %v4i32\n" :
                                                                "";
                specs["inPtr"]                  = isUniform ? "inPtr" : "outPtr";
-               specs["inSSBODecor"]    = isUniform ? "OpDecorate %SSBO_IN Block\n" : "";
                specsOffset["InOut"]    = "In";
                specs["InOffsets"]              = StringTemplate(isUniform ? getStructShaderComponet(SHADERTEMPLATE_STRIDEMIX_STD140) : getStructShaderComponet(SHADERTEMPLATE_STRIDEMIX_STD430)).specialize(specsOffset);
                specsOffset["InOut"]    = "Out";
@@ -2785,9 +2798,10 @@ void addGraphics8BitStorageUniformInt32To8Group (tcu::TestCaseGroup* testGroup)
        const StringTemplate    scalarDecoration(
                        "OpDecorate %ra_i32 ArrayStride 16\n"
                        "OpDecorate %ra_i8 ArrayStride 1\n"
+                       "OpDecorate %SSBO32 Block\n"
+                       "OpDecorate %SSBO8 Block\n"
                        "OpMemberDecorate %SSBO32 0 Offset 0\n"
                        "OpMemberDecorate %SSBO8 0 Offset 0\n"
-                       "OpDecorate %SSBO32 ${indecor}\n"
                        "OpDecorate %ssbo32 DescriptorSet 0\n"
                        "OpDecorate %ssbo8 DescriptorSet 0\n"
                        "OpDecorate %ssbo32 Binding 0\n"
@@ -2846,9 +2860,10 @@ void addGraphics8BitStorageUniformInt32To8Group (tcu::TestCaseGroup* testGroup)
        const StringTemplate    vecDecoration(
                        "OpDecorate %ra_v4i32 ArrayStride 16\n"
                        "OpDecorate %ra_v4i8 ArrayStride 4\n"
+                       "OpDecorate %SSBO32 Block\n"
+                       "OpDecorate %SSBO8 Block\n"
                        "OpMemberDecorate %SSBO32 0 Offset 0\n"
                        "OpMemberDecorate %SSBO8 0 Offset 0\n"
-                       "OpDecorate %SSBO32 ${indecor}\n"
                        "OpDecorate %ssbo32 DescriptorSet 0\n"
                        "OpDecorate %ssbo8 DescriptorSet 0\n"
                        "OpDecorate %ssbo32 Binding 0\n"
@@ -2929,7 +2944,6 @@ void addGraphics8BitStorageUniformInt32To8Group (tcu::TestCaseGroup* testGroup)
                        string                          name            = string(CAPABILITIES[UNIFORM_AND_STORAGEBUFFER_TEST].name) + "_" + categories[catIdx].name + "_" + intFacts[factIdx].name;
 
                        specs["cap"]                                    = CAPABILITIES[UNIFORM_AND_STORAGEBUFFER_TEST].cap;
-                       specs["indecor"]                                = CAPABILITIES[UNIFORM_AND_STORAGEBUFFER_TEST].decor;
                        specs["itype32"]                                = intFacts[factIdx].type32;
                        specs["v4itype32"]                              = "%v4" + string(intFacts[factIdx].type32).substr(1);
                        specs["itype8"]                                 = intFacts[factIdx].type8;
@@ -3011,9 +3025,10 @@ void addGraphics8BitStorageUniformInt8To32Group (tcu::TestCaseGroup* testGroup)
        const StringTemplate scalarDecoration           (
                        "OpDecorate %ra_i32 ArrayStride 4\n"
                        "OpDecorate %ra_i8 ArrayStride 16\n"
+                       "OpDecorate %SSBO32 Block\n"
+                       "OpDecorate %SSBO8 Block\n"
                        "OpMemberDecorate %SSBO32 0 Offset 0\n"
                        "OpMemberDecorate %SSBO8 0 Offset 0\n"
-                       "OpDecorate %SSBO8 ${indecor}\n"
                        "OpDecorate %ssbo32 DescriptorSet 0\n"
                        "OpDecorate %ssbo8 DescriptorSet 0\n"
                        "OpDecorate %ssbo32 Binding 1\n"
@@ -3072,9 +3087,10 @@ void addGraphics8BitStorageUniformInt8To32Group (tcu::TestCaseGroup* testGroup)
        const StringTemplate vecDecoration              (
                        "OpDecorate %ra_v2i32 ArrayStride 8\n"
                        "OpDecorate %ra_v2i8 ArrayStride 16\n"
+                       "OpDecorate %SSBO32 Block\n"
+                       "OpDecorate %SSBO8 Block\n"
                        "OpMemberDecorate %SSBO32 0 Offset 0\n"
                        "OpMemberDecorate %SSBO8 0 Offset 0\n"
-                       "OpDecorate %SSBO8 ${indecor}\n"
                        "OpDecorate %ssbo32 DescriptorSet 0\n"
                        "OpDecorate %ssbo8 DescriptorSet 0\n"
                        "OpDecorate %ssbo32 Binding 1\n"
@@ -3143,7 +3159,6 @@ void addGraphics8BitStorageUniformInt8To32Group (tcu::TestCaseGroup* testGroup)
                                string                          name            = string(CAPABILITIES[UNIFORM_AND_STORAGEBUFFER_TEST].name) + "_" + categories[catIdx].name + "_" + intFacts[factIdx].name;
 
                                specs["cap"]                                    = CAPABILITIES[UNIFORM_AND_STORAGEBUFFER_TEST].cap;
-                               specs["indecor"]                                = CAPABILITIES[UNIFORM_AND_STORAGEBUFFER_TEST].decor;
                                specs["itype32"]                                = intFacts[factIdx].type32;
                                specs["v2itype32"]                              = "%v2" + string(intFacts[factIdx].type32).substr(1);
                                specs["itype8"]                                 = intFacts[factIdx].type8;
@@ -3321,7 +3336,7 @@ void addGraphics8BitStoragePushConstantInt8To32Group (tcu::TestCaseGroup* testGr
                const StringTemplate    decoration      (
                        "OpDecorate %a${count}${type8} ArrayStride 1\n"
                        "OpDecorate %a${count}${type32} ArrayStride 4\n"
-                       "OpDecorate %SSBO32 BufferBlock\n"
+                       "OpDecorate %SSBO32 Block\n"
                        "OpMemberDecorate %SSBO32 0 Offset 0\n"
                        "OpDecorate %PC8 Block\n"
                        "OpMemberDecorate %PC8 0 Offset 0\n"
@@ -3436,6 +3451,7 @@ void addGraphics8BitStoragePushConstantInt8To32Group (tcu::TestCaseGroup* testGr
                const StringTemplate    decoration      (
                        "OpDecorate %a${count}${type8} ArrayStride 2\n"
                        "OpDecorate %a${count}${type32} ArrayStride 8\n"
+                       "OpDecorate %SSBO32 Block\n"
                        "OpMemberDecorate %SSBO32 0 Offset 0\n"
                        "OpDecorate %PC8 Block\n"
                        "OpMemberDecorate %PC8 0 Offset 0\n"
@@ -3586,9 +3602,10 @@ void addGraphics8BitStorageUniformInt16To8Group (tcu::TestCaseGroup* testGroup)
        const StringTemplate    scalarDecoration(
                        "OpDecorate %ra_i16 ArrayStride 16\n"
                        "OpDecorate %ra_i8 ArrayStride 1\n"
+                       "OpDecorate %SSBO16 Block\n"
+                       "OpDecorate %SSBO8 Block\n"
                        "OpMemberDecorate %SSBO16 0 Offset 0\n"
                        "OpMemberDecorate %SSBO8 0 Offset 0\n"
-                       "OpDecorate %SSBO16 ${indecor}\n"
                        "OpDecorate %ssbo16 DescriptorSet 0\n"
                        "OpDecorate %ssbo8 DescriptorSet 0\n"
                        "OpDecorate %ssbo16 Binding 0\n"
@@ -3649,9 +3666,10 @@ void addGraphics8BitStorageUniformInt16To8Group (tcu::TestCaseGroup* testGroup)
        const StringTemplate    vecDecoration(
                        "OpDecorate %ra_v4i16 ArrayStride 16\n"
                        "OpDecorate %ra_v4i8 ArrayStride 4\n"
+                       "OpDecorate %SSBO16 Block\n"
+                       "OpDecorate %SSBO8 Block\n"
                        "OpMemberDecorate %SSBO16 0 Offset 0\n"
                        "OpMemberDecorate %SSBO8 0 Offset 0\n"
-                       "OpDecorate %SSBO16 ${indecor}\n"
                        "OpDecorate %ssbo16 DescriptorSet 0\n"
                        "OpDecorate %ssbo8 DescriptorSet 0\n"
                        "OpDecorate %ssbo16 Binding 0\n"
@@ -3736,7 +3754,6 @@ void addGraphics8BitStorageUniformInt16To8Group (tcu::TestCaseGroup* testGroup)
                        string                          name            = string(CAPABILITIES[UNIFORM_AND_STORAGEBUFFER_TEST].name) + "_" + categories[catIdx].name + "_" + intFacts[factIdx].name;
 
                        specs["cap"]                                    = CAPABILITIES[UNIFORM_AND_STORAGEBUFFER_TEST].cap;
-                       specs["indecor"]                                = CAPABILITIES[UNIFORM_AND_STORAGEBUFFER_TEST].decor;
                        specs["itype16"]                                = intFacts[factIdx].type16;
                        specs["v4itype16"]                              = "%v4" + string(intFacts[factIdx].type16).substr(1);
                        specs["itype8"]                                 = intFacts[factIdx].type8;
@@ -3822,9 +3839,10 @@ void addGraphics8BitStorageUniformInt8To16Group (tcu::TestCaseGroup* testGroup)
        const StringTemplate scalarDecoration           (
                        "OpDecorate %ra_i16 ArrayStride 2\n"
                        "OpDecorate %ra_i8 ArrayStride 16\n"
+                       "OpDecorate %SSBO16 Block\n"
+                       "OpDecorate %SSBO8 Block\n"
                        "OpMemberDecorate %SSBO16 0 Offset 0\n"
                        "OpMemberDecorate %SSBO8 0 Offset 0\n"
-                       "OpDecorate %SSBO8 ${indecor}\n"
                        "OpDecorate %ssbo16 DescriptorSet 0\n"
                        "OpDecorate %ssbo8 DescriptorSet 0\n"
                        "OpDecorate %ssbo16 Binding 1\n"
@@ -3885,9 +3903,10 @@ void addGraphics8BitStorageUniformInt8To16Group (tcu::TestCaseGroup* testGroup)
        const StringTemplate vecDecoration              (
                        "OpDecorate %ra_v2i16 ArrayStride 4\n"
                        "OpDecorate %ra_v2i8 ArrayStride 16\n"
+                       "OpDecorate %SSBO16 Block\n"
+                       "OpDecorate %SSBO8 Block\n"
                        "OpMemberDecorate %SSBO16 0 Offset 0\n"
                        "OpMemberDecorate %SSBO8 0 Offset 0\n"
-                       "OpDecorate %SSBO8 ${indecor}\n"
                        "OpDecorate %ssbo16 DescriptorSet 0\n"
                        "OpDecorate %ssbo8 DescriptorSet 0\n"
                        "OpDecorate %ssbo16 Binding 1\n"
@@ -3956,7 +3975,6 @@ void addGraphics8BitStorageUniformInt8To16Group (tcu::TestCaseGroup* testGroup)
                                string                          name            = string(CAPABILITIES[UNIFORM_AND_STORAGEBUFFER_TEST].name) + "_" + categories[catIdx].name + "_" + intFacts[factIdx].name;
 
                                specs["cap"]                                    = CAPABILITIES[UNIFORM_AND_STORAGEBUFFER_TEST].cap;
-                               specs["indecor"]                                = CAPABILITIES[UNIFORM_AND_STORAGEBUFFER_TEST].decor;
                                specs["itype16"]                                = intFacts[factIdx].type16;
                                specs["v2itype16"]                              = "%v2" + string(intFacts[factIdx].type16).substr(1);
                                specs["itype8"]                                 = intFacts[factIdx].type8;
@@ -4138,7 +4156,7 @@ void addGraphics8BitStoragePushConstantInt8To16Group (tcu::TestCaseGroup* testGr
                const StringTemplate    decoration      (
                        "OpDecorate %a${count}${type8} ArrayStride 1\n"
                        "OpDecorate %a${count}${type16} ArrayStride 2\n"
-                       "OpDecorate %SSBO16 BufferBlock\n"
+                       "OpDecorate %SSBO16 Block\n"
                        "OpMemberDecorate %SSBO16 0 Offset 0\n"
                        "OpDecorate %PC8 Block\n"
                        "OpMemberDecorate %PC8 0 Offset 0\n"
@@ -4255,6 +4273,7 @@ void addGraphics8BitStoragePushConstantInt8To16Group (tcu::TestCaseGroup* testGr
                const StringTemplate    decoration      (
                        "OpDecorate %a${count}${type8} ArrayStride 2\n"
                        "OpDecorate %a${count}${type16} ArrayStride 4\n"
+                       "OpDecorate %SSBO16 Block\n"
                        "OpMemberDecorate %SSBO16 0 Offset 0\n"
                        "OpDecorate %PC8 Block\n"
                        "OpMemberDecorate %PC8 0 Offset 0\n"
@@ -4429,9 +4448,10 @@ void addGraphics8BitStorageUniformStruct8To32Group (tcu::TestCaseGroup* testGrou
                "\n"
                "${stridei32}"
                "\n"
+               "OpDecorate %SSBO_IN Block\n"
+               "OpDecorate %SSBO_OUT Block\n"
                "OpMemberDecorate %SSBO_IN 0 Offset 0\n"
                "OpMemberDecorate %SSBO_OUT 0 Offset 0\n"
-               "${indecor}"
                "OpDecorate %ssboIN DescriptorSet 0\n"
                "OpDecorate %ssboOUT DescriptorSet 0\n"
                "OpDecorate %ssboIN Binding 0\n"
@@ -4597,7 +4617,6 @@ void addGraphics8BitStorageUniformStruct8To32Group (tcu::TestCaseGroup* testGrou
                        const string                    testName        = string(CAPABILITIES[capIdx].name) + "_" + intFacts[intFactsNdx].name;
 
                        specs["cap"]                                            = CAPABILITIES[capIdx].cap;
-                       specs["indecor"]                                        = isUniform ? "OpDecorate %SSBO_IN Block\n" : "";
                        specs["stridei8"]                                       = getStructShaderComponet(isUniform ? SHADERTEMPLATE_STRIDE8BIT_STD140 : SHADERTEMPLATE_STRIDE8BIT_STD430);
                        specs["stridei32"]                                      = getStructShaderComponet(SHADERTEMPLATE_STRIDE32BIT_STD430);
                        specs["32Storage"]                                      = "StorageBuffer";
@@ -4697,9 +4716,10 @@ void addGraphics8BitStorageUniformStruct32To8Group (tcu::TestCaseGroup* testGrou
                "\n"
                "${stridei32}"
                "\n"
+               "OpDecorate %SSBO_IN Block\n"
+               "OpDecorate %SSBO_OUT Block\n"
                "OpMemberDecorate %SSBO_IN 0 Offset 0\n"
                "OpMemberDecorate %SSBO_OUT 0 Offset 0\n"
-               "${indecor}"
                "OpDecorate %ssboIN DescriptorSet 0\n"
                "OpDecorate %ssboOUT DescriptorSet 0\n"
                "OpDecorate %ssboIN Binding 0\n"
@@ -4867,7 +4887,6 @@ void addGraphics8BitStorageUniformStruct32To8Group (tcu::TestCaseGroup* testGrou
                        GraphicsResources       resources;
 
                        specs["cap"]                                    = CAPABILITIES[STORAGE_BUFFER_TEST].cap;
-                       specs["indecor"]                                = isUniform ? "OpDecorate %SSBO_IN Block\n" : "";
                        specs["stridei8"]                               = getStructShaderComponet(SHADERTEMPLATE_STRIDE8BIT_STD430);
                        specs["stridei32"]                              = getStructShaderComponet(isUniform ? SHADERTEMPLATE_STRIDE32BIT_STD140 : SHADERTEMPLATE_STRIDE32BIT_STD430);
                        specs["8Storage"]                               = "StorageBuffer";
@@ -4966,11 +4985,12 @@ void addGraphics8bitStorage8bitStructMixedTypesGroup (tcu::TestCaseGroup* group)
                "${OutOffsets}"
                "${InOffsets}"
                "\n"//SSBO IN
+               "OpDecorate %SSBO_IN Block\n"
                "OpMemberDecorate %SSBO_IN 0 Offset 0\n"
                "OpDecorate %ssboIN DescriptorSet 0\n"
-               "${inSSBODecor}"
                "OpDecorate %ssboIN Binding 0\n"
                "\n"//SSBO OUT
+               "OpDecorate %SSBO_OUT Block\n"
                "OpMemberDecorate %SSBO_OUT 0 Offset 0\n"
                "OpDecorate %ssboOUT DescriptorSet 0\n"
                "OpDecorate %ssboOUT Binding 1\n");
@@ -5102,7 +5122,6 @@ void addGraphics8bitStorage8bitStructMixedTypesGroup (tcu::TestCaseGroup* group)
                                                                "%v4i32inPtr  = OpTypePointer Uniform %v4i32\n" :
                                                                "";
                specs["inPtr"]                  = isUniform ? "inPtr" : "outPtr";
-               specs["inSSBODecor"]    = isUniform ? "OpDecorate %SSBO_IN Block\n" : "";
                specsOffset["InOut"]    = "In";
                specs["InOffsets"]              = StringTemplate(isUniform ? getStructShaderComponet(SHADERTEMPLATE_STRIDEMIX_STD140) : getStructShaderComponet(SHADERTEMPLATE_STRIDEMIX_STD430)).specialize(specsOffset);
                specsOffset["InOut"]    = "Out";