i965: Properly reject __DRI_CTX_FLAG_ROBUST_BUFFER_ACCESS when __DRI2_ROBUSTNESS is not enabled
Only allow __DRI_CTX_FLAG_ROBUST_BUFFER_ACCESS in brwCreateContext if intelInitScreen2 also enabled __DRI2_ROBUSTNESS (thereby enabling GLX_ARB_create_context). This fixes a regression in the piglit test "glx/GLX_ARB_create_context/invalid flag" v2: Remove commented debug code. Noticed by Jordan. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reported-by: Paul Berry <stereotype441@gmail.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Matt Turner <mattst88@gmail.com> Cc: "10.0" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
@@ -558,9 +558,16 @@ 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_FLAG_ROBUST_BUFFER_ACCESS)) {
|
||||
/* 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;
|
||||
|
||||
if (screen->has_context_reset_notification)
|
||||
allowed_flags |= __DRI_CTX_FLAG_ROBUST_BUFFER_ACCESS;
|
||||
|
||||
if (flags & ~allowed_flags) {
|
||||
*dri_ctx_error = __DRI_CTX_ERROR_UNKNOWN_FLAG;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1344,7 +1344,9 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp)
|
||||
|
||||
const int ret = drmIoctl(psp->fd, DRM_IOCTL_I915_GET_RESET_STATS, &stats);
|
||||
|
||||
psp->extensions = (ret == -1 && errno == EINVAL)
|
||||
intelScreen->has_context_reset_notification = (ret != -1 || errno != EINVAL);
|
||||
|
||||
psp->extensions = !intelScreen->has_context_reset_notification
|
||||
? intelScreenExtensions : intelRobustScreenExtensions;
|
||||
|
||||
return (const __DRIconfig**) intel_screen_make_configs(psp);
|
||||
|
||||
@@ -50,6 +50,11 @@ struct intel_screen
|
||||
|
||||
bool hw_has_swizzling;
|
||||
|
||||
/**
|
||||
* Does the kernel support context reset notifications?
|
||||
*/
|
||||
bool has_context_reset_notification;
|
||||
|
||||
dri_bufmgr *bufmgr;
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user