From 6374288b62aaab0da05d9218c31ffea5724f2607 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Fri, 14 Jul 2017 14:46:09 -0700 Subject: [PATCH] dri: Make classic drivers allow __DRI_CTX_FLAG_NO_ERROR. Grigori recently added EGL_KHR_create_context_no_error support, which causes EGL to pass a new __DRI_CTX_FLAG_NO_ERROR flag to drivers when requesting an appropriate context mode. driContextSetFlags() will already handle it properly for us, but the classic drivers all have code to explicitly balk at unknown flags. We need to let it through or they'll fail to create a no_error context. Reviewed-by: Matt Turner Reviewed-by: Grigori Goronzy --- src/mesa/drivers/dri/i915/intel_screen.c | 2 +- src/mesa/drivers/dri/i965/brw_context.c | 5 +++-- src/mesa/drivers/dri/nouveau/nouveau_context.c | 2 +- src/mesa/drivers/dri/r200/r200_context.c | 2 +- src/mesa/drivers/dri/radeon/radeon_context.c | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/mesa/drivers/dri/i915/intel_screen.c b/src/mesa/drivers/dri/i915/intel_screen.c index 9e23552b998..1ac72e14a15 100644 --- a/src/mesa/drivers/dri/i915/intel_screen.c +++ b/src/mesa/drivers/dri/i915/intel_screen.c @@ -972,7 +972,7 @@ intelCreateContext(gl_api api, __DRIscreen *sPriv = driContextPriv->driScreenPriv; struct intel_screen *intelScreen = sPriv->driverPrivate; - if (flags & ~__DRI_CTX_FLAG_DEBUG) { + if (flags & ~(__DRI_CTX_FLAG_DEBUG | __DRI_CTX_FLAG_NO_ERROR)) { *error = __DRI_CTX_ERROR_UNKNOWN_FLAG; return false; } diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index b23e811f305..bd26e2332c7 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -813,8 +813,9 @@ brwCreateContext(gl_api api, /* Only allow the __DRI_CTX_FLAG_ROBUST_BUFFER_ACCESS flag if the kernel * provides us with context reset notifications. */ - uint32_t allowed_flags = __DRI_CTX_FLAG_DEBUG - | __DRI_CTX_FLAG_FORWARD_COMPATIBLE; + uint32_t allowed_flags = __DRI_CTX_FLAG_DEBUG | + __DRI_CTX_FLAG_FORWARD_COMPATIBLE | + __DRI_CTX_FLAG_NO_ERROR; if (screen->has_context_reset_notification) allowed_flags |= __DRI_CTX_FLAG_ROBUST_BUFFER_ACCESS; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c index 6ddcadce1f0..d6f9e533848 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c @@ -63,7 +63,7 @@ nouveau_context_create(gl_api api, struct nouveau_context *nctx; struct gl_context *ctx; - if (flags & ~__DRI_CTX_FLAG_DEBUG) { + if (flags & ~(__DRI_CTX_FLAG_DEBUG | __DRI_CTX_FLAG_NO_ERROR)) { *error = __DRI_CTX_ERROR_UNKNOWN_FLAG; return false; } diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c index aaa9b9317df..5a7f33499b1 100644 --- a/src/mesa/drivers/dri/r200/r200_context.c +++ b/src/mesa/drivers/dri/r200/r200_context.c @@ -189,7 +189,7 @@ GLboolean r200CreateContext( gl_api api, int i; int tcl_mode; - if (flags & ~__DRI_CTX_FLAG_DEBUG) { + if (flags & ~(__DRI_CTX_FLAG_DEBUG | __DRI_CTX_FLAG_NO_ERROR)) { *error = __DRI_CTX_ERROR_UNKNOWN_FLAG; return false; } diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c index 11afe20c6a0..5ef3467ac17 100644 --- a/src/mesa/drivers/dri/radeon/radeon_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_context.c @@ -155,7 +155,7 @@ r100CreateContext( gl_api api, int i; int tcl_mode, fthrottle_mode; - if (flags & ~__DRI_CTX_FLAG_DEBUG) { + if (flags & ~(__DRI_CTX_FLAG_DEBUG | __DRI_CTX_FLAG_NO_ERROR)) { *error = __DRI_CTX_ERROR_UNKNOWN_FLAG; return false; } -- 2.30.2