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

Nicolai Hähnle nhaehnle at gmail.com
Tue Apr 18 10:35:41 UTC 2017


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...

Cheers,
Nicolai


>     /* setup the API dispatch tables with all nop functions */
>     ctx->OutsideBeginEnd = _mesa_alloc_dispatch_table();
>     if (!ctx->OutsideBeginEnd)
>        goto fail;
>     ctx->Exec = ctx->OutsideBeginEnd;
>     ctx->CurrentClientDispatch = ctx->CurrentServerDispatch = ctx->OutsideBeginEnd;
>
>     ctx->FragmentProgram._MaintainTexEnvProgram
>        = (getenv("MESA_TEX_PROG") != NULL);
>
>


-- 
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.


More information about the mesa-dev mailing list