From a0ed0eb3424df32c6ef4cf01f665e24d8fc4a41b Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Wed, 12 Apr 2017 15:08:01 +1000 Subject: [PATCH] mesa: add env var to force enable the KHR_no_error ctx flag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit V2: typo know -> known V3: add security check (Suggested by Nicolai) Reviewed-by: Nicolai Hähnle --- docs/envvars.html | 3 +++ src/mesa/main/context.c | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/docs/envvars.html b/docs/envvars.html index 653736565e6..a064f569c8b 100644 --- a/docs/envvars.html +++ b/docs/envvars.html @@ -46,6 +46,9 @@ sometimes be useful for debugging end-user issues.
  • MESA_NO_MMX - if set, disables Intel MMX optimizations
  • MESA_NO_3DNOW - if set, disables AMD 3DNow! optimizations
  • MESA_NO_SSE - if set, disables Intel SSE optimizations +
  • 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.
  • 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 diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 8876ca2e246..984c9e00bbf 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -1208,6 +1208,12 @@ _mesa_initialize_context(struct gl_context *ctx, if (!init_attrib_groups( ctx )) goto fail; + /* KHR_no_error is likely to crash, overflow memory, etc if an application + * has errors so don't enable it for setuid processes. + */ + if (getenv("MESA_NO_ERROR") && geteuid() == getuid()) + 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)