summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichel Dänzer <michel@tungstengraphics.com>2007-05-13 19:38:48 +0200
committerMichel Dänzer <michel@tungstengraphics.com>2007-05-13 19:38:48 +0200
commit70b48d72824184cf2d7c26bd11d74efb1db1a92b (patch)
tree581a502fec399ff5a9429569011aa8260353b482
parent87268d5f0faed884fd75e3a3e43a162350aa5d37 (diff)
downloadmesa-70b48d72824184cf2d7c26bd11d74efb1db1a92b.tar.gz
i915tex: Window vs. user created FBO cleanups.
-rw-r--r--src/mesa/drivers/dri/i915tex/i915_state_rasterizer.c3
-rw-r--r--src/mesa/drivers/dri/i915tex/intel_batchbuffer.c10
-rw-r--r--src/mesa/drivers/dri/i915tex/intel_context.h2
-rw-r--r--src/mesa/drivers/dri/i915tex/intel_fbo.c3
-rw-r--r--src/mesa/drivers/dri/i915tex/intel_hwz.c3
-rw-r--r--src/mesa/drivers/dri/i915tex/intel_lock.c7
-rw-r--r--src/mesa/drivers/dri/i915tex/intel_swapbuffers.c3
-rw-r--r--src/mesa/drivers/dri/i915tex/intel_swz.c3
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 &&