From: Keith Whitwell Date: Mon, 8 Mar 2010 19:23:10 +0000 (+0000) Subject: gallium: remove xlib_driver::display_surface X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3ab8211be40e3cd835bd1f6947b2c56f9a0c7a59;p=mesa.git 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. --- diff --git a/src/gallium/include/state_tracker/xlib_sw_winsys.h b/src/gallium/include/state_tracker/xlib_sw_winsys.h index c703d3b66ca..915a7b37fb5 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 d878740ab12..d8aa59b3b7c 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 ceefc1624cc..8b66b7459d9 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 3b51d7c17c4..08b7f08837f 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 };