[Mesa-dev] [PATCH 7/9] gallium: Wire up flush control
Adam Jackson
ajax at redhat.com
Tue May 12 08:54:48 PDT 2015
This still doesn't do anything unless your driver exposes the flush
control extension.
Signed-off-by: Adam Jackson <ajax at redhat.com>
---
src/gallium/include/state_tracker/st_api.h | 1 +
src/gallium/state_trackers/dri/dri_context.c | 7 ++++++-
src/mesa/state_tracker/st_manager.c | 3 +++
3 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h
index 86fdc69..4e18f10 100644
--- a/src/gallium/include/state_tracker/st_api.h
+++ b/src/gallium/include/state_tracker/st_api.h
@@ -89,6 +89,7 @@ enum st_api_feature
#define ST_CONTEXT_FLAG_DEBUG (1 << 0)
#define ST_CONTEXT_FLAG_FORWARD_COMPATIBLE (1 << 1)
#define ST_CONTEXT_FLAG_ROBUST_ACCESS (1 << 2)
+#define ST_CONTEXT_FLAG_RELEASE_NONE (1 << 3)
/**
* Reasons that context creation might fail.
diff --git a/src/gallium/state_trackers/dri/dri_context.c b/src/gallium/state_trackers/dri/dri_context.c
index f332ee9..3c0c1e7 100644
--- a/src/gallium/state_trackers/dri/dri_context.c
+++ b/src/gallium/state_trackers/dri/dri_context.c
@@ -86,11 +86,16 @@ dri_create_context(gl_api api, const struct gl_config * visual,
goto fail;
}
- if (ctx_config->attribute_mask != 0) {
+ if (ctx_config->attribute_mask &
+ ~(__DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR)) {
*error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE;
goto fail;
}
+ if ((ctx_config->attribute_mask & __DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR)
+ && (ctx_config->release_behavior == __DRI_CTX_RELEASE_BEHAVIOR_NONE))
+ attribs.flags |= ST_CONTEXT_FLAG_RELEASE_NONE;
+
if (sharedContextPrivate) {
st_share = ((struct dri_context *)sharedContextPrivate)->st;
}
diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
index 840f76a..c1987f3 100644
--- a/src/mesa/state_tracker/st_manager.c
+++ b/src/mesa/state_tracker/st_manager.c
@@ -681,6 +681,9 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi,
if (attribs->flags & ST_CONTEXT_FLAG_FORWARD_COMPATIBLE)
st->ctx->Const.ContextFlags |= GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT;
+ if (attribs->flags & ST_CONTEXT_FLAG_RELEASE_NONE)
+ st->ctx->Const.ContextReleaseBehavior = GL_NONE;
+
/* need to perform version check */
if (attribs->major > 1 || attribs->minor > 0) {
/* Is the actual version less than the requested version?
--
2.4.0
More information about the mesa-dev
mailing list