On 07/14/2017 04:10 PM, Kenneth Graunke wrote: > 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.
I'm almost afraid to ask... are there tests that try to create a no_error context? > --- > 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(-) > > Drivers other than i965 have not been tested. > > 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; > } > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev