summaryrefslogtreecommitdiff
path: root/src/gallium/state_trackers
diff options
context:
space:
mode:
authorChia-I Wu <olv@lunarg.com>2010-05-31 19:59:57 +0800
committerChia-I Wu <olv@lunarg.com>2010-05-31 20:06:59 +0800
commita27690931be9479353dd8ae0d52186f5c72f4380 (patch)
treeb304ee863398b691abf3b25cb6de43b0712c6573 /src/gallium/state_trackers
parent593cf8b54c288e6dda44da597b961bfb98d111ca (diff)
st/egl: Use stamps only to avoid unnecessary geometry update.
resource_surface_add_resources should still be called even when the stamps match. For example, a caller may ask for two different sets of attachments.
Diffstat (limited to 'src/gallium/state_trackers')
-rw-r--r--src/gallium/state_trackers/egl/gdi/native_gdi.c18
-rw-r--r--src/gallium/state_trackers/egl/x11/native_ximage.c18
2 files changed, 16 insertions, 20 deletions
diff --git a/src/gallium/state_trackers/egl/gdi/native_gdi.c b/src/gallium/state_trackers/egl/gdi/native_gdi.c
index 64f1b1d8f9c..29e89bcae80 100644
--- a/src/gallium/state_trackers/egl/gdi/native_gdi.c
+++ b/src/gallium/state_trackers/egl/gdi/native_gdi.c
@@ -101,13 +101,13 @@ static boolean
gdi_surface_update_buffers(struct native_surface *nsurf, uint buffer_mask)
{
struct gdi_surface *gsurf = gdi_surface(nsurf);
- boolean ret;
- gdi_surface_update_geometry(&gsurf->base);
- ret = resource_surface_add_resources(gsurf->rsurf, buffer_mask);
- gsurf->client_stamp = gsurf->server_stamp;
+ if (gsurf->client_stamp != gsurf->server_stamp) {
+ gdi_surface_update_geometry(&gsurf->base);
+ gsurf->client_stamp = gsurf->server_stamp;
+ }
- return ret;
+ return resource_surface_add_resources(gsurf->rsurf, buffer_mask);
}
/**
@@ -170,10 +170,8 @@ gdi_surface_validate(struct native_surface *nsurf, uint attachment_mask,
struct gdi_surface *gsurf = gdi_surface(nsurf);
uint w, h;
- if (gsurf->client_stamp != gsurf->server_stamp) {
- if (!gdi_surface_update_buffers(&gsurf->base, attachment_mask))
- return FALSE;
- }
+ if (!gdi_surface_update_buffers(&gsurf->base, attachment_mask))
+ return FALSE;
if (seq_num)
*seq_num = gsurf->client_stamp;
@@ -233,7 +231,7 @@ gdi_display_create_window_surface(struct native_display *ndpy,
}
/* initialize the geometry */
- gdi_surface_update_buffers(&gsurf->base, 0x0);
+ gdi_surface_update_geometry(&gsurf->base);
gsurf->base.destroy = gdi_surface_destroy;
gsurf->base.swap_buffers = gdi_surface_swap_buffers;
diff --git a/src/gallium/state_trackers/egl/x11/native_ximage.c b/src/gallium/state_trackers/egl/x11/native_ximage.c
index c60ec664008..3388fc61e14 100644
--- a/src/gallium/state_trackers/egl/x11/native_ximage.c
+++ b/src/gallium/state_trackers/egl/x11/native_ximage.c
@@ -123,13 +123,13 @@ static boolean
ximage_surface_update_buffers(struct native_surface *nsurf, uint buffer_mask)
{
struct ximage_surface *xsurf = ximage_surface(nsurf);
- boolean ret;
- ximage_surface_update_geometry(&xsurf->base);
- ret = resource_surface_add_resources(xsurf->rsurf, buffer_mask);
- xsurf->client_stamp = xsurf->server_stamp;
+ if (xsurf->client_stamp != xsurf->server_stamp) {
+ ximage_surface_update_geometry(&xsurf->base);
+ xsurf->client_stamp = xsurf->server_stamp;
+ }
- return ret;
+ return resource_surface_add_resources(xsurf->rsurf, buffer_mask);
}
/**
@@ -185,10 +185,8 @@ ximage_surface_validate(struct native_surface *nsurf, uint attachment_mask,
struct ximage_surface *xsurf = ximage_surface(nsurf);
uint w, h;
- if (xsurf->client_stamp != xsurf->server_stamp) {
- if (!ximage_surface_update_buffers(&xsurf->base, attachment_mask))
- return FALSE;
- }
+ if (!ximage_surface_update_buffers(&xsurf->base, attachment_mask))
+ return FALSE;
if (seq_num)
*seq_num = xsurf->client_stamp;
@@ -255,7 +253,7 @@ ximage_display_create_surface(struct native_display *ndpy,
xsurf->drawable = drawable;
xsurf->visual = *xconf->visual;
/* initialize the geometry */
- ximage_surface_update_buffers(&xsurf->base, 0x0);
+ ximage_surface_update_geometry(&xsurf->base);
xsurf->xdraw.visual = xsurf->visual.visual;
xsurf->xdraw.depth = xsurf->visual.depth;