Module: Mesa
Branch: master
Commit: 6ce9006d76c050663af0be61cc88c3215d6f8cea
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6ce9006d76c050663af0be61cc88c3215d6f8cea

Author: Neil Roberts <[email protected]>
Date:   Wed Oct  1 20:00:50 2014 +0100

i965: Enable flush control

Reviewed-by: Adam Jackson <[email protected]>
Reviewed-by: Nicolai Hähnle <[email protected]>
Reviewed-by: Emil Velikov <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Signed-off-by: Neil Roberts <[email protected]>

---

 src/mesa/drivers/dri/i965/brw_context.c  | 20 +++++++++++++++++++-
 src/mesa/drivers/dri/i965/intel_screen.c |  2 ++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/brw_context.c 
b/src/mesa/drivers/dri/i965/brw_context.c
index bb8b755cb5..879daae774 100644
--- a/src/mesa/drivers/dri/i965/brw_context.c
+++ b/src/mesa/drivers/dri/i965/brw_context.c
@@ -850,7 +850,9 @@ brwCreateContext(gl_api api,
       return false;
    }
 
-   if (ctx_config->attribute_mask & ~__DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY) {
+   if (ctx_config->attribute_mask &
+       ~(__DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY |
+         __DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR)) {
       *dri_ctx_error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE;
       return false;
    }
@@ -859,6 +861,20 @@ brwCreateContext(gl_api api,
       ((ctx_config->attribute_mask & __DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY) &&
        ctx_config->reset_strategy != __DRI_CTX_RESET_NO_NOTIFICATION);
 
+   GLenum release_behavior = GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH;
+   if (ctx_config->attribute_mask & __DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR) {
+      switch (ctx_config->release_behavior) {
+      case __DRI_CTX_RELEASE_BEHAVIOR_NONE:
+         release_behavior = GL_NONE;
+         break;
+      case __DRI_CTX_RELEASE_BEHAVIOR_FLUSH:
+         break;
+      default:
+         *dri_ctx_error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE;
+         return false;
+      }
+   }
+
    struct brw_context *brw = rzalloc(NULL, struct brw_context);
    if (!brw) {
       fprintf(stderr, "%s: failed to alloc context\n", __func__);
@@ -1030,6 +1046,8 @@ brwCreateContext(gl_api api,
       ctx->Const.RobustAccess = GL_TRUE;
    }
 
+   ctx->Const.ContextReleaseBehavior = release_behavior;
+
    if (INTEL_DEBUG & DEBUG_SHADER_TIME)
       brw_init_shader_time(brw);
 
diff --git a/src/mesa/drivers/dri/i965/intel_screen.c 
b/src/mesa/drivers/dri/i965/intel_screen.c
index cdc36adc78..4bfb6636c3 100644
--- a/src/mesa/drivers/dri/i965/intel_screen.c
+++ b/src/mesa/drivers/dri/i965/intel_screen.c
@@ -1431,6 +1431,7 @@ static const __DRIextension *screenExtensions[] = {
     &intelRendererQueryExtension.base,
     &dri2ConfigQueryExtension.base,
     &dri2NoErrorExtension.base,
+    &dri2FlushControlExtension.base,
     NULL
 };
 
@@ -1441,6 +1442,7 @@ static const __DRIextension 
*intelRobustScreenExtensions[] = {
     &intelImageExtension.base,
     &intelRendererQueryExtension.base,
     &dri2ConfigQueryExtension.base,
+    &dri2FlushControlExtension.base,
     &dri2Robustness.base,
     &dri2NoErrorExtension.base,
     NULL

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to