From a5379ef4a7e32690e67f3ffca39da84d8d40979b Mon Sep 17 00:00:00 2001 From: Ilia Mirkin Date: Sat, 1 May 2021 18:52:48 -0400 Subject: [PATCH] st/mesa: properly encode OES_geometry_shader requirement Since the extension was added, we grew a cap to expose the number of invocations. Use it to prevent geometry shaders from being spuriously exposed. Signed-off-by: Ilia Mirkin Reviewed-by: Eric Anholt Part-of: --- src/mesa/state_tracker/st_extensions.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 73cbb297c45..f0f03420aac 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -1293,13 +1293,11 @@ void st_init_extensions(struct pipe_screen *screen, extensions->ARB_tessellation_shader = GL_TRUE; } - /* What this is really checking for is the ability to support multiple - * invocations of a geometry shader. There is no separate cap for that, so - * we check the GLSLVersion. - */ + /* OES_geometry_shader requires instancing */ if ((GLSLVersion >= 400 || ESSLVersion >= 310) && screen->get_shader_param(screen, PIPE_SHADER_GEOMETRY, - PIPE_SHADER_CAP_MAX_INSTRUCTIONS) > 0) { + PIPE_SHADER_CAP_MAX_INSTRUCTIONS) > 0 && + consts->MaxGeometryShaderInvocations >= 32) { extensions->OES_geometry_shader = GL_TRUE; }