diff options
author | Michel Dänzer <michel@tungstengraphics.com> | 2007-05-13 19:38:48 +0200 |
---|---|---|
committer | Michel Dänzer <michel@tungstengraphics.com> | 2007-05-13 19:38:48 +0200 |
commit | 70b48d72824184cf2d7c26bd11d74efb1db1a92b (patch) | |
tree | 581a502fec399ff5a9429569011aa8260353b482 | |
parent | 87268d5f0faed884fd75e3a3e43a162350aa5d37 (diff) | |
download | mesa-70b48d72824184cf2d7c26bd11d74efb1db1a92b.tar.gz |
i915tex: Window vs. user created FBO cleanups.
-rw-r--r-- | src/mesa/drivers/dri/i915tex/i915_state_rasterizer.c | 3 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i915tex/intel_batchbuffer.c | 10 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i915tex/intel_context.h | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i915tex/intel_fbo.c | 3 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i915tex/intel_hwz.c | 3 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i915tex/intel_lock.c | 7 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i915tex/intel_swapbuffers.c | 3 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i915tex/intel_swz.c | 3 |
8 files changed, 15 insertions, 19 deletions
diff --git a/src/mesa/drivers/dri/i915tex/i915_state_rasterizer.c b/src/mesa/drivers/dri/i915tex/i915_state_rasterizer.c index d7b84c559b1..909eeabfb61 100644 --- a/src/mesa/drivers/dri/i915tex/i915_state_rasterizer.c +++ b/src/mesa/drivers/dri/i915tex/i915_state_rasterizer.c @@ -46,8 +46,7 @@ static GLboolean check_hwz( struct intel_context *intel ) { /* _NEW_BUFFERS ??? */ - struct intel_framebuffer *intel_fb = - (struct intel_framebuffer *) intel->state.DrawBuffer; + struct intel_framebuffer *intel_fb = intel_get_fb( intel ); return intel_fb && intel_fb->Base.Name == 0 && intel_fb->hwz; } diff --git a/src/mesa/drivers/dri/i915tex/intel_batchbuffer.c b/src/mesa/drivers/dri/i915tex/intel_batchbuffer.c index 6fd627012f7..ee09e8388af 100644 --- a/src/mesa/drivers/dri/i915tex/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/i915tex/intel_batchbuffer.c @@ -323,7 +323,8 @@ do_flush_locked( struct intel_batchbuffer *batch, DRM_BO_HINT_ALLOW_UNFENCED_MAP); } - if (batch->zone_init_offset && !intel_fb->may_use_zone_init) { + if (batch->zone_init_offset && + (intel_fb->Base.Name != 0 || !intel_fb->may_use_zone_init)) { *(GLuint*)(batch->map + batch->zone_init_offset) = (_3DPRIMITIVE | PRIM3D_CLEAR_RECT | 5); } @@ -354,8 +355,6 @@ do_flush_locked( struct intel_batchbuffer *batch, if (intel->numClipRects) { if (batch->flags & INTEL_BATCH_HWZ) { struct i915_state *state = &i915_context( &intel->ctx )->current; - struct intel_framebuffer *intel_fb = - (struct intel_framebuffer *) intel->ctx.DrawBuffer; intel_cliprect_hwz_ioctl(batch->intel, intel_fb->pf_current_page, @@ -425,8 +424,7 @@ intel_batchbuffer_flush(struct intel_batchbuffer *batch, GLuint used = batch->segment_finish_offset[0] - batch->segment_start_offset[0]; GLboolean was_locked = intel->locked; GLint *ptr = (GLint *)(batch->map + batch->segment_finish_offset[0]); - struct intel_framebuffer *intel_fb = - (struct intel_framebuffer*)intel->ctx.DrawBuffer; + struct intel_framebuffer *intel_fb = intel_get_fb(intel); if (used == 0) return batch->last_fence; @@ -441,7 +439,7 @@ intel_batchbuffer_flush(struct intel_batchbuffer *batch, /* Add the MI_BATCH_BUFFER_END. Always add an MI_FLUSH - this is a * performance drain that we would like to avoid. */ - if (intel_fb->hwz) { + if (intel_fb->Base.Name == 0 && intel_fb->hwz) { *ptr++ = MI_BATCH_BUFFER_END; used += 4; if (used & 4) { diff --git a/src/mesa/drivers/dri/i915tex/intel_context.h b/src/mesa/drivers/dri/i915tex/intel_context.h index 6bb7e13166b..94cdf27ec97 100644 --- a/src/mesa/drivers/dri/i915tex/intel_context.h +++ b/src/mesa/drivers/dri/i915tex/intel_context.h @@ -495,7 +495,7 @@ intel_texture_image(struct gl_texture_image *img) static INLINE struct intel_framebuffer * intel_get_fb( struct intel_context *intel ) { - return (struct intel_framebuffer *) intel->driDrawable->driverPrivate; + return (struct intel_framebuffer *) intel->ctx.DrawBuffer; } extern struct intel_renderbuffer * diff --git a/src/mesa/drivers/dri/i915tex/intel_fbo.c b/src/mesa/drivers/dri/i915tex/intel_fbo.c index 9d1015ff8f8..aa806887a7d 100644 --- a/src/mesa/drivers/dri/i915tex/intel_fbo.c +++ b/src/mesa/drivers/dri/i915tex/intel_fbo.c @@ -323,7 +323,6 @@ intel_resize_framebuffer(GLcontext *ctx, GLuint width, GLuint height) { - struct intel_framebuffer *intel_fb = (struct intel_framebuffer*)fb; int i; if (fb->Width == width && @@ -337,6 +336,8 @@ intel_resize_framebuffer(GLcontext *ctx, /* Make sure all window system renderbuffers are up to date */ if (fb->Name == 0) { + struct intel_framebuffer *intel_fb = (struct intel_framebuffer*)fb; + for (i = 0; i < 3; i++) { struct gl_renderbuffer *rb = &intel_fb->color_rb[i]->Base; diff --git a/src/mesa/drivers/dri/i915tex/intel_hwz.c b/src/mesa/drivers/dri/i915tex/intel_hwz.c index fa70bd44e4a..913338d980d 100644 --- a/src/mesa/drivers/dri/i915tex/intel_hwz.c +++ b/src/mesa/drivers/dri/i915tex/intel_hwz.c @@ -342,7 +342,8 @@ static void hwz_clear_rect( struct clip_render *render, ptr = (union fi *)hwz_emit_hardware_state(hwz, 7, INTEL_BATCH_HWZ); - if (intel_fb->may_use_zone_init && + if (intel_fb->Base.Name == 0 && + intel_fb->may_use_zone_init && hwz->start_of_frame && x1 == 0 && y1 == 0 && diff --git a/src/mesa/drivers/dri/i915tex/intel_lock.c b/src/mesa/drivers/dri/i915tex/intel_lock.c index 1a5c1aa5695..0786985d673 100644 --- a/src/mesa/drivers/dri/i915tex/intel_lock.c +++ b/src/mesa/drivers/dri/i915tex/intel_lock.c @@ -114,13 +114,10 @@ void UPDATE_CLIPRECTS(struct intel_context *intel) void WAIT_VBLANK( struct intel_context *intel ) { - struct intel_framebuffer *intel_fb = NULL; + struct intel_framebuffer *intel_fb = intel_get_fb(intel); struct intel_renderbuffer *intel_rb = NULL; - if (intel->driDrawable) { - intel_fb = intel->driDrawable->driverPrivate; - - if (intel_fb) + if (intel_fb && intel_fb->Base.Name == 0) { intel_rb = intel_get_renderbuffer(&intel_fb->Base, intel_fb->Base._ColorDrawBufferMask[0] == diff --git a/src/mesa/drivers/dri/i915tex/intel_swapbuffers.c b/src/mesa/drivers/dri/i915tex/intel_swapbuffers.c index 61ae7e2e2d5..f00d54c5fb9 100644 --- a/src/mesa/drivers/dri/i915tex/intel_swapbuffers.c +++ b/src/mesa/drivers/dri/i915tex/intel_swapbuffers.c @@ -401,8 +401,7 @@ GLboolean intel_emit_wait_flips(struct intel_context *intel, GLuint **ptr ) { - struct intel_framebuffer *intel_fb = - (struct intel_framebuffer *) intel->ctx.DrawBuffer; + struct intel_framebuffer *intel_fb = intel_get_fb(intel); struct intel_renderbuffer *intel_rb = intel_get_renderbuffer(&intel_fb->Base, intel_fb->Base._ColorDrawBufferMask[0] == diff --git a/src/mesa/drivers/dri/i915tex/intel_swz.c b/src/mesa/drivers/dri/i915tex/intel_swz.c index dcca4c7cea8..8e6c6da0eb4 100644 --- a/src/mesa/drivers/dri/i915tex/intel_swz.c +++ b/src/mesa/drivers/dri/i915tex/intel_swz.c @@ -439,7 +439,8 @@ static void swz_clear( struct clip_render *render, if (do_depth && intel_frame_can_clear_stencil( intel->ft )) do_stencil = GL_TRUE; - if (intel_fb->may_use_zone_init && + if (intel_fb->Base.Name == 0 && + intel_fb->may_use_zone_init && swz->clears == 0 && swz->draws == 0 && x1 == 0 && |