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

Timothy Arceri tarceri at itsqueeze.com
Tue Apr 18 00:09:40 UTC 2017


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;
+
    /* 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);
 
-- 
2.9.3



More information about the mesa-dev mailing list