diff options
author | Kristian Høgsberg <krh@redhat.com> | 2008-02-26 17:57:41 -0500 |
---|---|---|
committer | Kristian Høgsberg <krh@redhat.com> | 2008-02-26 18:01:13 -0500 |
commit | 20b8bff49cba3e8246e29004c5ff38f231d589ff (patch) | |
tree | 5a09f5f8d4e4fbae726eabd97b03ea4ebd695451 /src/mesa/drivers | |
parent | 451bd1941e9791882f7931c8613643f152871e79 (diff) | |
download | external_mesa3d-20b8bff49cba3e8246e29004c5ff38f231d589ff.zip external_mesa3d-20b8bff49cba3e8246e29004c5ff38f231d589ff.tar.gz external_mesa3d-20b8bff49cba3e8246e29004c5ff38f231d589ff.tar.bz2 |
i965: Setup framebuffer texture in meta_draw_region.
With DRI2 we there is no screen region until a drawable is bound to
the context. Set up the framebuffer texture in meta_draw_region instead
which should also handle the case where the draw region changes as a
result of resizing a redirected window or resizing the screen.
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.h | 3 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_metaops.c | 5 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_tex.c | 9 |
4 files changed, 12 insertions, 7 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index de0b74a..2d32f1d 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -194,8 +194,6 @@ GLboolean brwCreateContext( const __GLcontextModes *mesaVis, brw_ProgramCacheInit( ctx ); - brw_FrameBufferTexInit( brw ); - return GL_TRUE; } diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index a6c60aa..49e739b 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -653,7 +653,8 @@ void brw_debug_batch(struct intel_context *intel); * brw_tex.c */ void brwUpdateTextureState( struct intel_context *intel ); -void brw_FrameBufferTexInit( struct brw_context *brw ); +void brw_FrameBufferTexInit( struct brw_context *brw, + struct intel_region *region ); void brw_FrameBufferTexDestroy( struct brw_context *brw ); void brw_validate_textures( struct brw_context *brw ); diff --git a/src/mesa/drivers/dri/i965/brw_metaops.c b/src/mesa/drivers/dri/i965/brw_metaops.c index 5257484..3f5df27 100644 --- a/src/mesa/drivers/dri/i965/brw_metaops.c +++ b/src/mesa/drivers/dri/i965/brw_metaops.c @@ -369,6 +369,11 @@ static void meta_draw_region( struct intel_context *intel, brw->state.draw_region = draw_region; brw->state.depth_region = depth_region; + if (intel->frame_buffer_texobj != NULL) + brw_FrameBufferTexDestroy(brw); + + brw_FrameBufferTexInit(brw, draw_region); + brw->state.dirty.mesa |= _NEW_BUFFERS; } diff --git a/src/mesa/drivers/dri/i965/brw_tex.c b/src/mesa/drivers/dri/i965/brw_tex.c index 05f724c..ef14b8e 100644 --- a/src/mesa/drivers/dri/i965/brw_tex.c +++ b/src/mesa/drivers/dri/i965/brw_tex.c @@ -49,11 +49,11 @@ #include "brw_defines.h" -void brw_FrameBufferTexInit( struct brw_context *brw ) +void brw_FrameBufferTexInit( struct brw_context *brw, + struct intel_region *region ) { struct intel_context *intel = &brw->intel; GLcontext *ctx = &intel->ctx; - struct intel_region *region = intel->front_region; struct gl_texture_object *obj; struct gl_texture_image *img; @@ -74,8 +74,9 @@ void brw_FrameBufferTexInit( struct brw_context *brw ) void brw_FrameBufferTexDestroy( struct brw_context *brw ) { - brw->intel.ctx.Driver.DeleteTexture( &brw->intel.ctx, - brw->intel.frame_buffer_texobj ); + if (brw->intel.frame_buffer_texobj != NULL) + brw->intel.ctx.Driver.DeleteTexture( &brw->intel.ctx, + brw->intel.frame_buffer_texobj ); } /** |