Mesa (master): st/vega: Fix window resizing with egl_g3d.

Chia-I Wu olv at kemper.freedesktop.org
Mon Jan 18 04:09:27 UTC 2010


Module: Mesa
Branch: master
Commit: 1ed63119452396e764a0f5b11db78903a2594df1
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1ed63119452396e764a0f5b11db78903a2594df1

Author: Chia-I Wu <olvaffe at gmail.com>
Date:   Mon Jan 18 12:05:25 2010 +0800

st/vega: Fix window resizing with egl_g3d.

egl_g3d calls st_set_framebuffer_surface on window resize.  It updates
the renderbuffer's geometry and makes st_resize_framebuffer a no-op.
This commit improves the no-op check a little bit.  It can do better
after gallium-fb-dimensions is merged.

---

 src/gallium/state_trackers/vega/vg_context.h |    2 +-
 src/gallium/state_trackers/vega/vg_tracker.c |   11 +++++++----
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/gallium/state_trackers/vega/vg_context.h b/src/gallium/state_trackers/vega/vg_context.h
index ff8c1a0..bc88c8d 100644
--- a/src/gallium/state_trackers/vega/vg_context.h
+++ b/src/gallium/state_trackers/vega/vg_context.h
@@ -50,7 +50,7 @@ struct st_renderbuffer {
 };
 
 struct st_framebuffer {
-   VGint init_width, init_height;
+   VGint width, height;
    struct st_renderbuffer *strb;
    struct st_renderbuffer *dsrb;
 
diff --git a/src/gallium/state_trackers/vega/vg_tracker.c b/src/gallium/state_trackers/vega/vg_tracker.c
index ff80aab..617c174 100644
--- a/src/gallium/state_trackers/vega/vg_tracker.c
+++ b/src/gallium/state_trackers/vega/vg_tracker.c
@@ -193,8 +193,8 @@ struct st_framebuffer * st_create_framebuffer(const void *visual,
       */
       stfb->alpha_mask = 0;
 
-      stfb->init_width = width;
-      stfb->init_height = height;
+      stfb->width = width;
+      stfb->height = height;
       stfb->privateData = privateData;
    }
 
@@ -282,11 +282,14 @@ void st_resize_framebuffer(struct st_framebuffer *stfb,
 
    /* If this is a noop, exit early and don't do the clear, etc below.
     */
-   if (strb->width == width &&
-       strb->height == height &&
+   if (stfb->width == width &&
+       stfb->height == height &&
        state->zsbuf)
       return;
 
+   stfb->width = width;
+   stfb->height = height;
+
    if (strb->width != width || strb->height != height)
       st_renderbuffer_alloc_storage(ctx, strb,
                                  width, height);




More information about the mesa-commit mailing list