diff options
author | Dave Airlie <[email protected]> | 2011-11-11 15:55:30 +0000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2011-12-05 11:31:15 +0000 |
commit | 4ed8a585840865550bb9acac38c5ef26670a1fb8 (patch) | |
tree | 91112a5ac82924f09bfe86002d93d504afe623e8 | |
parent | 6d573c4dd7d90eb2c1748102924bdac1bb8fd50a (diff) |
radeon: update flush according to glXMakeCurrent man page
This also copies code from intel driver to do this.
Signed-off-by: Dave Airlie <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_common_context.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/src/mesa/drivers/dri/radeon/radeon_common_context.c index bb0168e6cd9..ceaefdad91c 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c @@ -38,6 +38,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "drivers/common/meta.h" #include "main/context.h" #include "main/framebuffer.h" +#include "main/fbobject.h" #include "main/renderbuffer.h" #include "main/state.h" #include "main/simple_list.h" @@ -564,8 +565,22 @@ GLboolean radeonMakeCurrent(__DRIcontext * driContextPriv, __DRIdrawable * driReadPriv) { radeonContextPtr radeon; + GET_CURRENT_CONTEXT(curCtx); struct gl_framebuffer *drfb, *readfb; + if (driContextPriv) + radeon = (radeonContextPtr)driContextPriv->driverPrivate; + else + radeon = NULL; + /* According to the glXMakeCurrent() man page: "Pending commands to + * the previous context, if any, are flushed before it is released." + * But only flush if we're actually changing contexts. + */ + + if ((radeonContextPtr)curCtx && (radeonContextPtr)curCtx != radeon) { + _mesa_flush(curCtx); + } + if (!driContextPriv) { if (RADEON_DEBUG & RADEON_DRI) fprintf(stderr, "%s ctx is null\n", __FUNCTION__); @@ -573,8 +588,6 @@ GLboolean radeonMakeCurrent(__DRIcontext * driContextPriv, return GL_TRUE; } - radeon = (radeonContextPtr) driContextPriv->driverPrivate; - if(driDrawPriv == NULL && driReadPriv == NULL) { drfb = _mesa_create_framebuffer(&radeon->glCtx->Visual); readfb = drfb; |