gallium: remove xlib_driver::display_surface
authorKeith Whitwell <keithw@vmware.com>
Mon, 8 Mar 2010 19:23:10 +0000 (19:23 +0000)
committerKeith Whitwell <keithw@vmware.com>
Mon, 8 Mar 2010 19:23:10 +0000 (19:23 +0000)
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.

src/gallium/include/state_tracker/xlib_sw_winsys.h
src/gallium/state_trackers/glx/xlib/xm_api.c
src/gallium/winsys/xlib/xlib_llvmpipe.c
src/gallium/winsys/xlib/xlib_softpipe.c

index c703d3b..915a7b3 100644 (file)
@@ -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.
index d878740..d8aa59b 100644 (file)
@@ -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);
index ceefc16..8b66b74 100644 (file)
@@ -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
 };
 
 
index 3b51d7c..08b7f08 100644 (file)
@@ -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
 };