"${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"
"${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"
"${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"
"${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"
"${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"
"${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"
<< "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"
"\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"
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";
"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"
"${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"
"%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";
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"
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"
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;
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"
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"
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;
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"
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"
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"
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"
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;
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"
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"
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;
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"
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"
"\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"
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";
"\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"
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";
"${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");
"%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";