[Mesa-dev] [PATCH 3/5] main/version: Don't require ARB_compute_shader for OpenGLES 3.1

Jordan Justen jordan.l.justen at intel.com
Tue Dec 15 17:01:35 PST 2015


On 2015-12-15 16:50:39, Ian Romanick wrote:
> On 12/15/2015 04:08 PM, Jordan Justen wrote:
> > The OpenGL ARB_compute_shader extension specfication requires at least
> > 1024 for GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, whereas OpenGLES 3.1
> > only required 128.
> 
> Does this mean that extensions->ARB_compute_shader is not set?

Yes. I think we can't set this in some cases due to desktop GL
requirements, but we should still be able to support CS on ES 3.1.

> I'm a little bit nervous about that. Are we sure that we check for
> compute shader support correctly everywhere (i.e., don't just check
> the extension bit that isn't set)?

I think we have it pretty well covered. The ES 3.1 CTS seems pretty
happy with what we have.

That said, patch 2 was yet another fix to use
_mesa_has_compute_shaders, and I wouldn't be surprised if we ended up
finding some more. (I did try to grep to find anything we might have
missed.)

-Jordan

> > Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> > Cc: Ian Romanick <idr at freedesktop.org>
> > Cc: Marta Lofstedt <marta.lofstedt at intel.com>
> > ---
> >  src/mesa/main/version.c | 9 ++++++---
> >  1 file changed, 6 insertions(+), 3 deletions(-)
> > 
> > diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
> > index e92bb11..112a73d 100644
> > --- a/src/mesa/main/version.c
> > +++ b/src/mesa/main/version.c
> > @@ -433,7 +433,8 @@ compute_version_es1(const struct gl_extensions *extensions)
> >  }
> >  
> >  static GLuint
> > -compute_version_es2(const struct gl_extensions *extensions)
> > +compute_version_es2(const struct gl_extensions *extensions,
> > +                    const struct gl_constants *consts)
> >  {
> >     /* OpenGL ES 2.0 is derived from OpenGL 2.0 */
> >     const bool ver_2_0 = (extensions->ARB_texture_cube_map &&
> > @@ -464,9 +465,11 @@ compute_version_es2(const struct gl_extensions *extensions)
> >                           extensions->EXT_texture_snorm &&
> >                           extensions->NV_primitive_restart &&
> >                           extensions->OES_depth_texture_cube_map);
> > +   const bool es31_compute_shader =
> > +      consts->MaxComputeWorkGroupInvocations >= 128;
> >     const bool ver_3_1 = (ver_3_0 &&
> >                           extensions->ARB_arrays_of_arrays &&
> > -                         extensions->ARB_compute_shader &&
> > +                         es31_compute_shader &&
> >                           extensions->ARB_draw_indirect &&
> >                           extensions->ARB_explicit_uniform_location &&
> >                           extensions->ARB_framebuffer_no_attachments &&
> > @@ -508,7 +511,7 @@ _mesa_get_version(const struct gl_extensions *extensions,
> >     case API_OPENGLES:
> >        return compute_version_es1(extensions);
> >     case API_OPENGLES2:
> > -      return compute_version_es2(extensions);
> > +      return compute_version_es2(extensions, consts);
> >     }
> >     return 0;
> >  }
> > 
> 


More information about the mesa-dev mailing list