diff options
author | Adam Jackson <[email protected]> | 2015-02-04 13:05:36 -0500 |
---|---|---|
committer | Adam Jackson <[email protected]> | 2017-11-06 16:09:03 -0500 |
commit | 5cc06bec1993d856370545fb3f7f363757ddae8b (patch) | |
tree | ed7c0fe64480fe173019fa50485178b06fbfdb8b | |
parent | c0be3aae6cfe1e8a51ed21e6fa10c5a51a216c36 (diff) |
gallium: Wire up flush control
Reviewed-by: Marek Olšák <[email protected]>
Reviewed-by: Nicolai Hähnle <[email protected]>
Reviewed-by: Emil Velikov <[email protected]>
Signed-off-by: Adam Jackson <[email protected]>
-rw-r--r-- | src/gallium/include/state_tracker/st_api.h | 1 | ||||
-rw-r--r-- | src/gallium/state_trackers/dri/dri_context.c | 6 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_manager.c | 3 |
3 files changed, 9 insertions, 1 deletions
diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h index 2232c3efa18..11a9878cf64 100644 --- a/src/gallium/include/state_tracker/st_api.h +++ b/src/gallium/include/state_tracker/st_api.h @@ -91,6 +91,7 @@ enum st_api_feature #define ST_CONTEXT_FLAG_ROBUST_ACCESS (1 << 2) #define ST_CONTEXT_FLAG_RESET_NOTIFICATION_ENABLED (1 << 3) #define ST_CONTEXT_FLAG_NO_ERROR (1 << 4) +#define ST_CONTEXT_FLAG_RELEASE_NONE (1 << 5) /** * 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 d3a57322af3..18bbfa046ca 100644 --- a/src/gallium/state_trackers/dri/dri_context.c +++ b/src/gallium/state_trackers/dri/dri_context.c @@ -57,7 +57,7 @@ dri_create_context(gl_api api, const struct gl_config * visual, unsigned allowed_flags = __DRI_CTX_FLAG_DEBUG | __DRI_CTX_FLAG_FORWARD_COMPATIBLE | __DRI_CTX_FLAG_NO_ERROR; - unsigned allowed_attribs = 0; + unsigned allowed_attribs = __DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR; const __DRIbackgroundCallableExtension *backgroundCallable = screen->sPriv->dri2.backgroundCallable; @@ -112,6 +112,10 @@ dri_create_context(gl_api api, const struct gl_config * visual, if (ctx_config->flags & __DRI_CTX_FLAG_NO_ERROR) attribs.flags |= ST_CONTEXT_FLAG_NO_ERROR; + 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 eebde621837..48260df0c34 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -882,6 +882,9 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi, st_install_device_reset_callback(st); } + 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? |