From 7b140d1bdaf07badebdc5ac222ab4ff4d182ebec Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Mon, 10 Sep 2012 17:31:24 +0300 Subject: [PATCH] mesa/dri: Move context flag validation down into the drivers Soon some drivers will support a different set of flags than other drivers. If some flags have to be filtered in the driver, we might as well filter all of them in the driver. The changes in nouveau use tabs because nouveau seems to have it's own indentation rules. v2: Fix some rebase failures noticed by Ken (returning the wrong types, etc.). Signed-off-by: Ian Romanick Reviewed-by: Kenneth Graunke --- src/gallium/state_trackers/dri/common/dri_context.c | 5 +++++ src/mesa/drivers/dri/i915/intel_screen.c | 5 +++++ src/mesa/drivers/dri/i965/brw_context.c | 5 +++++ src/mesa/drivers/dri/nouveau/nouveau_context.c | 7 ++++--- src/mesa/drivers/dri/r200/r200_context.c | 7 ++++--- src/mesa/drivers/dri/radeon/radeon_context.c | 7 ++++--- 6 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/gallium/state_trackers/dri/common/dri_context.c b/src/gallium/state_trackers/dri/common/dri_context.c index 5cfd1edfc81..988e28ea244 100644 --- a/src/gallium/state_trackers/dri/common/dri_context.c +++ b/src/gallium/state_trackers/dri/common/dri_context.c @@ -101,6 +101,11 @@ dri_create_context(gl_api api, const struct gl_config * visual, goto fail; } + if (flags & ~(__DRI_CTX_FLAG_DEBUG | __DRI_CTX_FLAG_FORWARD_COMPATIBLE)) { + *error = __DRI_CTX_ERROR_UNKNOWN_FLAG; + goto fail; + } + if (notify_reset) { *error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE; goto fail; diff --git a/src/mesa/drivers/dri/i915/intel_screen.c b/src/mesa/drivers/dri/i915/intel_screen.c index a4b40b74dbb..9a1b3785374 100644 --- a/src/mesa/drivers/dri/i915/intel_screen.c +++ b/src/mesa/drivers/dri/i915/intel_screen.c @@ -917,6 +917,11 @@ intelCreateContext(gl_api api, __DRIscreen *sPriv = driContextPriv->driScreenPriv; struct intel_screen *intelScreen = sPriv->driverPrivate; + if (flags & ~__DRI_CTX_FLAG_DEBUG) { + *error = __DRI_CTX_ERROR_UNKNOWN_FLAG; + return false; + } + if (notify_reset) { *error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE; return false; diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index 01fb9880422..3e6dade613d 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -580,6 +580,11 @@ brwCreateContext(gl_api api, struct dd_function_table functions; struct gl_config visual; + if (flags & ~(__DRI_CTX_FLAG_DEBUG | __DRI_CTX_FLAG_FORWARD_COMPATIBLE)) { + *dri_ctx_error = __DRI_CTX_ERROR_UNKNOWN_FLAG; + return false; + } + if (notify_reset) { *dri_ctx_error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE; return false; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c index a7f14b518d1..d44864ca9a9 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c @@ -62,9 +62,10 @@ nouveau_context_create(gl_api api, struct nouveau_context *nctx; struct gl_context *ctx; - /* API and flag filtering is handled in dri2CreateContextAttribs. - */ - (void) flags; + if (flags & ~__DRI_CTX_FLAG_DEBUG) { + *error = __DRI_CTX_ERROR_UNKNOWN_FLAG; + return false; + } if (notify_reset) { *error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE; diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c index 58c300c3d60..d4e9ca8caca 100644 --- a/src/mesa/drivers/dri/r200/r200_context.c +++ b/src/mesa/drivers/dri/r200/r200_context.c @@ -213,9 +213,10 @@ GLboolean r200CreateContext( gl_api api, int i; int tcl_mode; - /* Flag filtering is handled in dri2CreateContextAttribs. - */ - (void) flags; + if (flags & ~__DRI_CTX_FLAG_DEBUG) { + *error = __DRI_CTX_ERROR_UNKNOWN_FLAG; + return false; + } if (notify_reset) { *error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE; diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c index c2200d70e45..76bfe55c0eb 100644 --- a/src/mesa/drivers/dri/radeon/radeon_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_context.c @@ -180,9 +180,10 @@ r100CreateContext( gl_api api, int i; int tcl_mode, fthrottle_mode; - /* Flag filtering is handled in dri2CreateContextAttribs. - */ - (void) flags; + if (flags & ~__DRI_CTX_FLAG_DEBUG) { + *error = __DRI_CTX_ERROR_UNKNOWN_FLAG; + return false; + } if (notify_reset) { *error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE; -- 2.30.2