summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Whitwell <keithw@vmware.com>2010-03-08 19:23:10 +0000
committerKeith Whitwell <keithw@vmware.com>2010-03-08 19:23:10 +0000
commit3ab8211be40e3cd835bd1f6947b2c56f9a0c7a59 (patch)
tree66d487e3f3ed11186303fb1cb98464010be4d5ea
parentc867c58c7340eb5d56f7cc3edf95cce94600f858 (diff)
gallium: remove xlib_driver::display_surface
Just use flush_frontbuffer directly. The flush_frontbuffer routine has been somewhat devalued recently, but it is actually just the right interface for our needs. It is in pipe_screen, meaning that any wrapping (eg trace module) will get properly unwrapped before we try and use the pipe_surface argument for real. If a particular co-state-tracker needs to implement this itself, it should organize a way to allow the winsys to call back up to its level, rather than hijacking the driver-supplied implementation.
-rw-r--r--src/gallium/include/state_tracker/xlib_sw_winsys.h3
-rw-r--r--src/gallium/state_trackers/glx/xlib/xm_api.c10
-rw-r--r--src/gallium/winsys/xlib/xlib_llvmpipe.c13
-rw-r--r--src/gallium/winsys/xlib/xlib_softpipe.c11
4 files changed, 3 insertions, 34 deletions
diff --git a/src/gallium/include/state_tracker/xlib_sw_winsys.h b/src/gallium/include/state_tracker/xlib_sw_winsys.h
index c703d3b66c..915a7b37fb 100644
--- a/src/gallium/include/state_tracker/xlib_sw_winsys.h
+++ b/src/gallium/include/state_tracker/xlib_sw_winsys.h
@@ -22,9 +22,6 @@ struct xlib_drawable {
struct xm_driver {
struct pipe_screen *(*create_pipe_screen)( Display *display );
-
- void (*display_surface)( struct xlib_drawable *,
- struct pipe_surface * );
};
/* Called by the libgl-xlib target code to build the rendering stack.
diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c b/src/gallium/state_trackers/glx/xlib/xm_api.c
index d878740ab1..d8aa59b3b7 100644
--- a/src/gallium/state_trackers/glx/xlib/xm_api.c
+++ b/src/gallium/state_trackers/glx/xlib/xm_api.c
@@ -1092,13 +1092,9 @@ void XMesaSwapBuffers( XMesaBuffer b )
st_swapbuffers(b->stfb, &frontLeftSurf, NULL);
if (frontLeftSurf) {
- if (_screen != screen) {
- struct trace_surface *tr_surf = trace_surface( frontLeftSurf );
- struct pipe_surface *surf = tr_surf->surface;
- frontLeftSurf = surf;
- }
-
- driver.display_surface(&b->ws, frontLeftSurf);
+ screen->flush_frontbuffer( screen,
+ frontLeftSurf,
+ &b->ws );
}
xmesa_check_and_update_buffer_size(NULL, b);
diff --git a/src/gallium/winsys/xlib/xlib_llvmpipe.c b/src/gallium/winsys/xlib/xlib_llvmpipe.c
index ceefc1624c..8b66b7459d 100644
--- a/src/gallium/winsys/xlib/xlib_llvmpipe.c
+++ b/src/gallium/winsys/xlib/xlib_llvmpipe.c
@@ -69,22 +69,9 @@ fail:
}
-static void
-xlib_llvmpipe_display_surface(struct xlib_drawable *xm_buffer,
- struct pipe_surface *surf)
-{
- struct llvmpipe_texture *texture = llvmpipe_texture(surf->texture);
-
- assert(texture->dt);
- if (texture->dt)
- xlib_sw_display(xm_buffer, texture->dt);
-}
-
-
struct xm_driver xlib_llvmpipe_driver =
{
.create_pipe_screen = xlib_create_llvmpipe_screen,
- .display_surface = xlib_llvmpipe_display_surface
};
diff --git a/src/gallium/winsys/xlib/xlib_softpipe.c b/src/gallium/winsys/xlib/xlib_softpipe.c
index 3b51d7c17c..08b7f08837 100644
--- a/src/gallium/winsys/xlib/xlib_softpipe.c
+++ b/src/gallium/winsys/xlib/xlib_softpipe.c
@@ -57,22 +57,11 @@ fail:
}
-static void
-xlib_softpipe_display_surface(struct xlib_drawable *xm_buffer,
- struct pipe_surface *surf)
-{
- struct softpipe_texture *texture = softpipe_texture(surf->texture);
-
- assert(texture->dt);
- if (texture->dt)
- xlib_sw_display(xm_buffer, texture->dt);
-}
struct xm_driver xlib_softpipe_driver =
{
.create_pipe_screen = xlib_create_softpipe_screen,
- .display_surface = xlib_softpipe_display_surface
};