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

Ilia Mirkin imirkin at alum.mit.edu
Thu Mar 2 02:09:30 UTC 2017


On Wed, Mar 1, 2017 at 8:47 PM, Tomasz Figa <tfiga at chromium.org> wrote:
> Hi,
>
> On Fri, Feb 24, 2017 at 9:38 AM, Tomasz Figa <tfiga at chromium.org> wrote:
>> On Fri, Feb 24, 2017 at 5:00 AM, Kenneth Graunke <kenneth at whitecape.org>
>> wrote:
>>>
>>> On Thursday, February 23, 2017 10:46:54 AM PST Ilia Mirkin wrote:
>>> > The assumption was that if you're setting that ext, you can do gles31.
>>> > Is
>>> > there a driver/hw combo where that's not the case? If so, we should fix
>>> > that instead...
>>>
>>> ChromeOS/ARC++ currently disables GLES 3.1 on i965 because we haven't
>>> passed all the dEQP tests for it.  So, we support the functionality,
>>> but they're using GLES 3.0 contexts.  I'm guessing that's why they hit
>>> this and I haven't.
>>>
>>> They could probably disable the bit too, but checking whether the
>>> feature is actually exposed seems pretty reasonable.
>>
>>
>> Correct me if I'm wrong, but I think one can also create a context with
>> exact version by using EGL_KHR_create_context.

You can ask, but you may not receive. In mesa, I believe the context
will be upgraded to the highest version available.

>>
>> In any case, there are more checks for this extension in this file and they
>> either call this helper or explicitly check context version.
>
> Did we reach any conclusion here?
>
> Best regards,
> Tomasz

So, I have a few conflicting thoughts:

(a) I hate having to saddle the code with impossible conditions. This
change may seem minor but it's an admission that non-sensical context
settings are OK. I don't think the code should be made to handle every
conceivable scenario, only reasonable ones.

(b) Having extension bools being set depend on version numbers is not
great -- the version is determined by what extensions are enabled, so
if you're a driver like i965, you can have it all nicely controlled in
one place. If you're in the st_extensions.c logic bit for a gallium
driver, there's a bit of guesswork regarding which version will
ultimately be exposed. The half-assed solution I came up with was to
largely copy the version.c logic over to determine when to set stuff.
So ... not great.

Given that I'm conflicted on this in the first place, and the change
is quite minor, I yield to the people that have to make conformance
suites pass as part of their day job :)


More information about the mesa-dev mailing list