Commit dee8dad4 by Brandon Schade Committed by Angle LUCI CQ

Vulkan: Fix geometry shader qualifier validation

Added missing validation to handle in/out qualifier for geometry shaders Test: KHR-GLES32.core.geometry_shader.nonarray_input.* Bug: angleproject:5579 Change-Id: I9ee0853526ce296df1f56fb7783f9847b31e49bc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2901256 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 9bc837f6
...@@ -4430,8 +4430,13 @@ TIntermDeclaration *TParseContext::addInterfaceBlock( ...@@ -4430,8 +4430,13 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
case EvqFlat: case EvqFlat:
case EvqNoPerspective: case EvqNoPerspective:
case EvqCentroid: case EvqCentroid:
case EvqGeometryIn:
case EvqGeometryOut:
if (!IsShaderIoBlock(typeQualifier.qualifier) && if (!IsShaderIoBlock(typeQualifier.qualifier) &&
typeQualifier.qualifier != EvqPatchIn && typeQualifier.qualifier != EvqPatchOut) typeQualifier.qualifier != EvqPatchIn &&
typeQualifier.qualifier != EvqPatchOut &&
typeQualifier.qualifier != EvqGeometryIn &&
typeQualifier.qualifier != EvqGeometryOut)
{ {
error(field->line(), "invalid qualifier on interface block member", error(field->line(), "invalid qualifier on interface block member",
getQualifierString(qualifier)); getQualifierString(qualifier));
......
...@@ -1898,6 +1898,12 @@ bool ValidateGetProgramPipelineivBase(const Context *context, ...@@ -1898,6 +1898,12 @@ bool ValidateGetProgramPipelineivBase(const Context *context,
case GL_FRAGMENT_SHADER: case GL_FRAGMENT_SHADER:
case GL_COMPUTE_SHADER: case GL_COMPUTE_SHADER:
break; break;
case GL_GEOMETRY_SHADER:
return context->getExtensions().geometryShader || context->getClientVersion() >= ES_3_2;
case GL_TESS_CONTROL_SHADER:
case GL_TESS_EVALUATION_SHADER:
return context->getExtensions().tessellationShaderEXT ||
context->getClientVersion() >= ES_3_2;
default: default:
context->validationError(GL_INVALID_ENUM, kInvalidPname); context->validationError(GL_INVALID_ENUM, kInvalidPname);
......
...@@ -10,8 +10,6 @@ ...@@ -10,8 +10,6 @@
// tests) // tests)
// Translator's lack of support for redefining gl_PerVertex // Translator's lack of support for redefining gl_PerVertex
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.api.getProgramiv3 = FAIL 5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.api.getProgramiv3 = FAIL
// Failure in translator validation regarding varying arrayness
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.nonarray_input.* = FAIL
// Crash gathering transform feedback varyings on GS-only separable program // Crash gathering transform feedback varyings on GS-only separable program
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.api.program_pipeline_vs_gs_capture = SKIP 5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.api.program_pipeline_vs_gs_capture = SKIP
5579 VULKAN WIN : KHR-GLES32.core.separable_programs_tf.geometry_active = SKIP 5579 VULKAN WIN : KHR-GLES32.core.separable_programs_tf.geometry_active = SKIP
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment