Commit 969b8f31 by Brandon Schade Committed by Commit Bot

Vulkan: Fix geometry shader validation with vertex shaders

Added validation to disallow usage of geometry shaders without a vertex shader Bug: angleproject:5579 Test: KHR-GLES32.core.geometry_shader.api.fs_gs_draw_call Test: KHR-GLES32.core.geometry_shader.api.pipeline_program_without_active_vs Change-Id: Ieeec544d514ac772416ab0427c1c1c5058276f98 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2796151Reviewed-by: 's avatarTim Van Patten <timvp@google.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
parent 3036ff2d
...@@ -3661,6 +3661,18 @@ const char *ValidateProgramPipelineAttachedPrograms(ProgramPipeline *programPipe ...@@ -3661,6 +3661,18 @@ const char *ValidateProgramPipelineAttachedPrograms(ProgramPipeline *programPipe
} }
} }
// [EXT_geometry_shader] Section 11.1.gs Geometry Shaders
// A non-separable program object or program pipeline object that includes
// a geometry shader must also include a vertex shader.
// An INVALID_OPERATION error is generated by any command that transfers
// vertices to the GL if the current program state has a geometry shader
// but no vertex shader.
if (!programPipeline->getShaderProgram(ShaderType::Vertex) &&
programPipeline->getShaderProgram(ShaderType::Geometry))
{
return gl::err::kNoActiveGraphicsShaderStage;
}
return nullptr; return nullptr;
} }
......
...@@ -33,10 +33,6 @@ ...@@ -33,10 +33,6 @@
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.layered_rendering.layered_rendering = FAIL 5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.layered_rendering.layered_rendering = FAIL
// Crashes on ASSERT due to mismatch between shader resources and pipeline layout // Crashes on ASSERT due to mismatch between shader resources and pipeline layout
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.api.max_image_uniforms = SKIP 5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.api.max_image_uniforms = SKIP
// The spec says if PPO misses VS or GS, it's not an error, but the test expects
// GL_INVALID_OPERATION. Our validation is incorrect regardless.
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.api.fs_gs_draw_call = FAIL
5579 VULKAN WIN : KHR-GLES32.core.geometry_shader.api.pipeline_program_without_active_vs = SKIP
// Failures on windows nvidia // Failures on windows nvidia
5579 VULKAN WIN NVIDIA : KHR-GLES32.core.geometry_shader.limits.max_invocations = FAIL 5579 VULKAN WIN NVIDIA : KHR-GLES32.core.geometry_shader.limits.max_invocations = FAIL
5579 VULKAN WIN NVIDIA : KHR-GLES32.core.tessellation_shader.single.primitive_coverage = FAIL 5579 VULKAN WIN NVIDIA : KHR-GLES32.core.tessellation_shader.single.primitive_coverage = FAIL
......
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