[Mesa-dev] [PATCH 01/14] mesa: add env var to force enable the KHR_no_error ctx flag

Timothy Arceri tarceri at itsqueeze.com
Wed Apr 19 01:44:59 UTC 2017



On 19/04/17 11:39, Michel Dänzer wrote:
> On 18/04/17 07:35 PM, Nicolai Hähnle wrote:
>> On 18.04.2017 02:09, Timothy Arceri wrote:
>>> V2: typo know -> known
>>> ---
>>>  docs/envvars.html       | 3 +++
>>>  src/mesa/main/context.c | 3 +++
>>>  2 files changed, 6 insertions(+)
>>>
>>> diff --git a/docs/envvars.html b/docs/envvars.html
>>> index 6537365..a064f56 100644
>>> --- a/docs/envvars.html
>>> +++ b/docs/envvars.html
>>> @@ -39,20 +39,23 @@ sometimes be useful for debugging end-user issues.
>>>
>>>
>>>
>>>  <h2>Core Mesa environment variables</h2>
>>>
>>>  <ul>
>>>  <li>MESA_NO_ASM - if set, disables all assembly language optimizations
>>>  <li>MESA_NO_MMX - if set, disables Intel MMX optimizations
>>>  <li>MESA_NO_3DNOW - if set, disables AMD 3DNow! optimizations
>>>  <li>MESA_NO_SSE - if set, disables Intel SSE optimizations
>>> +<li>MESA_NO_ERROR - if set error checking is disabled as per
>>> KHR_no_error.
>>> +   This will result in undefined behaviour for invalid use of the
>>> api, but
>>> +   can reduce CPU use for apps that are known to be error free.</li>
>>>  <li>MESA_DEBUG - if set, error messages are printed to stderr.  For
>>> example,
>>>     if the application generates a GL_INVALID_ENUM error, a
>>> corresponding error
>>>     message indicating where the error occurred, and possibly why,
>>> will be
>>>     printed to stderr.<br>
>>>
>>>     For release builds, MESA_DEBUG defaults to off (no debug output).
>>>
>>>     MESA_DEBUG accepts the following comma-separated list of named
>>>     flags, which adds extra behaviour to just set MESA_DEBUG=1:
>>>     <ul>
>>> diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
>>> index 8876ca2..33bdbd7 100644
>>> --- a/src/mesa/main/context.c
>>> +++ b/src/mesa/main/context.c
>>> @@ -1201,20 +1201,23 @@ _mesa_initialize_context(struct gl_context *ctx,
>>>        shared = _mesa_alloc_shared_state(ctx);
>>>        if (!shared)
>>>           return GL_FALSE;
>>>     }
>>>
>>>     _mesa_reference_shared_state(ctx, &ctx->Shared, shared);
>>>
>>>     if (!init_attrib_groups( ctx ))
>>>        goto fail;
>>>
>>> +   if (getenv("MESA_NO_ERROR"))
>>> +      ctx->Const.ContextFlags |= GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR;
>>> +
>>
>> This seems like the kind of setting that should be ignored for setuid
>> processes. Not that we're particularly clean about this in general, and
>> GL apps really shouldn't be setuid in the first place, but still...
>
> Also, there should be a way to force error checking, even if the
> application asks to disable it, so that we can still detect incorrect
> application behaviour. Either using e.g. MESA_NO_ERROR=0 or a different
> environment variable.
>
>

Sure, I agree. But this series doesn't enable it if the application 
asked so I've left that until we add the glx/egl flags (the glx spec has 
not been released yet).


More information about the mesa-dev mailing list