Browse Source

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.
tags/7.8-rc1
Chia-I Wu 15 years ago
parent
commit
1ed6311945

+ 1
- 1
src/gallium/state_trackers/vega/vg_context.h View File

@@ -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;


+ 7
- 4
src/gallium/state_trackers/vega/vg_tracker.c View File

@@ -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);

Loading…
Cancel
Save