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

Ilia Mirkin imirkin at alum.mit.edu
Wed Dec 16 14:14:04 PST 2015


On Wed, Dec 16, 2015 at 5:02 PM, Jordan Justen
<jordan.l.justen at intel.com> wrote:
> On 2015-12-16 13:27:07, Ilia Mirkin wrote:
>> On Tue, Dec 15, 2015 at 8:45 PM, Ian Romanick <idr at freedesktop.org> wrote:
>> > On 12/15/2015 05:01 PM, Jordan Justen wrote:
>> >> 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.)
>> >
>> > I just did that too.  I didn't see anything that looked problematic except:
>> >
>> > src/mesa/main/get.c:/* HACK: remove when ARB_compute_shader is actually
>> > supported */
>>
>> Pretty sure I added this based on the premise that there will not be a
>> situation where you legitimately have ES 3.1 but not
>> ARB_compute_shader.
>
> There is a significant difference in requirements for
> GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS in the extension (1024) vs.
> OpenGLES 3.1 (128).

Right, I get why you're doing it. Just explaining my comment :)
Hopefully we'll still be able to drop the distinction as you gain
support for doing 1024 invocations on gen8+, but until then it
definitely makes sense.

It looks like the max on Adreno A3xx is also 512 (assuming that I'm
looking at the right thing), although it's unlikely it'll actually
reach GLES 3.1. Not sure offhand what Adreno A4xx limits it to.

It also appears that the limit on NVIDIA Tesla family is 512, although
it's unlikely to get GLES 3.1 either. Fermi increases it to 1024 so
all good.

  -ilia


More information about the mesa-dev mailing list