Some vertex shaders are not writing a value to gl_Position, which can cause
unintended run-time behavior (including termination or system instability).
Components: Vulkan
VK-GL-CTS issue: 1579
Affects:
dEQP-VK.binding_model.descriptorset_random.*
dEQP-VK.memory_model.message_passing.*
Change-Id: I3f2f21f23508bda3062a4480e9fac78748bab32b
" uvec4 color = (accum != 0) ? uvec4(0,0,0,0) : uvec4(1,0,0,1);\n"
" imageStore(image0_0, ivec2(gl_VertexIndex % " << DIM << ", gl_VertexIndex / " << DIM << "), color);\n"
" gl_PointSize = 1.0f;\n"
" uvec4 color = (accum != 0) ? uvec4(0,0,0,0) : uvec4(1,0,0,1);\n"
" imageStore(image0_0, ivec2(gl_VertexIndex % " << DIM << ", gl_VertexIndex / " << DIM << "), color);\n"
" gl_PointSize = 1.0f;\n"
+ " gl_Position = vec4(0.0f, 0.0f, 0.0f, 1.0f);\n"
"}\n";
programCollection.glslSources.add("test") << glu::VertexSource(vss.str());
"}\n";
programCollection.glslSources.add("test") << glu::VertexSource(vss.str());
" uint bufferCoord = gl_VertexIndex;\n"
" uint partnerBufferCoord = subgroupShuffleXor(gl_VertexIndex, gl_SubgroupSize-1);\n"
" ivec2 imageCoord = ivec2(gl_VertexIndex % (DIM*NUM_WORKGROUP_EACH_DIM), gl_VertexIndex / (DIM*NUM_WORKGROUP_EACH_DIM));\n"
" uint bufferCoord = gl_VertexIndex;\n"
" uint partnerBufferCoord = subgroupShuffleXor(gl_VertexIndex, gl_SubgroupSize-1);\n"
" ivec2 imageCoord = ivec2(gl_VertexIndex % (DIM*NUM_WORKGROUP_EACH_DIM), gl_VertexIndex / (DIM*NUM_WORKGROUP_EACH_DIM));\n"
- " ivec2 partnerImageCoord = subgroupShuffleXor(imageCoord, gl_SubgroupSize-1);\n\n"
- " gl_PointSize = 1.0f;\n\n";
+ " ivec2 partnerImageCoord = subgroupShuffleXor(imageCoord, gl_SubgroupSize-1);\n"
+ " gl_PointSize = 1.0f;\n"
+ " gl_Position = vec4(0.0f, 0.0f, 0.0f, 1.0f);\n\n";
break;
case STAGE_FRAGMENT:
css <<
break;
case STAGE_FRAGMENT:
css <<
" uint bufferCoord = globalId.y * DIM*NUM_WORKGROUP_EACH_DIM + globalId.x;\n"
" uint partnerBufferCoord = partnerGlobalId.y * DIM*NUM_WORKGROUP_EACH_DIM + partnerGlobalId.x;\n"
" ivec2 imageCoord = globalId;\n"
" uint bufferCoord = globalId.y * DIM*NUM_WORKGROUP_EACH_DIM + globalId.x;\n"
" uint partnerBufferCoord = partnerGlobalId.y * DIM*NUM_WORKGROUP_EACH_DIM + partnerGlobalId.x;\n"
" ivec2 imageCoord = globalId;\n"
- " ivec2 partnerImageCoord = partnerGlobalId;\n\n"
- " gl_PointSize = 1.0f;\n\n";
+ " ivec2 partnerImageCoord = partnerGlobalId;\n"
+ " gl_PointSize = 1.0f;\n"
+ " gl_Position = vec4(0.0f, 0.0f, 0.0f, 1.0f);\n\n";
break;
case STAGE_FRAGMENT:
css <<
break;
case STAGE_FRAGMENT:
css <<