[Mesa-dev] [PATCH 1/3] mesa: Add _mesa_has_compute_shaders

Jordan Justen jordan.l.justen at intel.com
Sat Feb 14 00:33:56 PST 2015


On 2015-02-13 23:13:01, Ilia Mirkin wrote:
> On Sat, Feb 14, 2015 at 2:02 AM, Ben Widawsky
> <benjamin.widawsky at intel.com> wrote:
> > From: Jordan Justen <jordan.l.justen at intel.com>
> >
> > Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> > Reviewed-by: Ben Widawsky <ben at bwidawsk.net>
> > ---
> >  src/mesa/main/context.h | 11 +++++++++++
> >  1 file changed, 11 insertions(+)
> >
> > diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h
> > index d902ea7..69389ae 100644
> > --- a/src/mesa/main/context.h
> > +++ b/src/mesa/main/context.h
> > @@ -326,6 +326,17 @@ _mesa_has_geometry_shaders(const struct gl_context *ctx)
> >  }
> >
> >
> > +/**
> > + * Checks if the context supports compute shaders.
> > + */
> > +static inline GLboolean
> > +_mesa_has_compute_shaders(const struct gl_context *ctx)
> > +{
> > +   return ctx->Extensions.ARB_compute_shader ||
> > +      (ctx->API == API_OPENGLES2 && ctx->Version >= 31);
> 
> This will return true for a driver that has compute shader support but
> is currently exposing a compat (or GLES1?) context. I guess you want
> like
> 
> (API == GLES2 && version >= 31) ||
> (desktop && version >= 43) ||
> (API == CORE && extension)
> 
> This seems a little on the complex side though -- a driver that really
> supports GLES3.1 or GL4.3 will have that extension bit set -- the only
> time that wouldn't happen is if someone forces the version. Not sure
> if that's a case to really worry about...
> 
> This would be much simpler as
> 
> extension && (API == GLES2 || API == CORE)

I don't think this would work if you just want to support it for
ES3.1. Since a driver would have to have the extension for GL4.3, how
about:
 (API == GLES2 && version >= 31) ||
 (API == CORE && extension)

-Jordan


More information about the mesa-dev mailing list