[Mesa-dev] [PATCH] mesa: Use _mesa_has_OES_geometry_shader() when validating draws

Tomasz Figa tfiga at chromium.org
Thu Feb 23 08:05:18 UTC 2017

In validate_DrawElements_common() we need to check for OES_geometry_shader
extension to determine if we should fail if transform feedback is
unpaused. However current code reads ctx->Extensions.OES_geometry_shader
directly, which does not take context version into account. This means
that if the context is GLES 3.0, which makes the OES_geometry_shader
inapplicable, we would not validate the draw properly. To fix it, let's
replace the check with a call to _mesa_has_OES_geometry_shader().

Fixes following dEQP tests on i965 with a GLES 3.0 context:


Change-Id: Iebc960b479fcd5f6c2b1501cb3e7798b575e6c4d
Signed-off-by: Tomasz Figa <tfiga at chromium.org>
 src/mesa/main/api_validate.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
index 1e8a714067..184bf143ed 100644
--- a/src/mesa/main/api_validate.c
+++ b/src/mesa/main/api_validate.c
@@ -664,7 +664,8 @@ validate_DrawElements_common(struct gl_context *ctx,
     * to have been overlooked.  The body of the spec only explicitly allows
     * the indirect versions.
-   if (_mesa_is_gles3(ctx) && !ctx->Extensions.OES_geometry_shader &&
+   if (_mesa_is_gles3(ctx) &&
+       !_mesa_has_OES_geometry_shader(ctx) &&
        _mesa_is_xfb_active_and_unpaused(ctx)) {
       _mesa_error(ctx, GL_INVALID_OPERATION,
                   "%s(transform feedback active)", caller);

More information about the mesa-dev mailing list