st/glx: Make xmesa_create_st_api a callback of xm_driver.
authorChia-I Wu <olv@lunarg.com>
Sat, 13 Mar 2010 07:57:15 +0000 (15:57 +0800)
committerChia-I Wu <olv@lunarg.com>
Sat, 13 Mar 2010 08:05:09 +0000 (16:05 +0800)
Instead of guessing the API in st/glx, let the target decide how to
create st_api.

src/gallium/state_trackers/glx/xlib/xm_api.c
src/gallium/state_trackers/glx/xlib/xm_public.h
src/gallium/state_trackers/glx/xlib/xm_st.c
src/gallium/state_trackers/glx/xlib/xm_st.h
src/gallium/targets/libgl-xlib/xlib.c

index 3ea4d77805fe3a37408205543001e55eb0a49a1d..82384a4d284b8b8ff258c07221895cdacf695ed8 100644 (file)
@@ -708,7 +708,7 @@ xmesa_init( Display *display )
    if (firstTime) {
       pipe_mutex_init(_xmesa_lock);
       screen = driver.create_pipe_screen( display );
-      stapi = xmesa_create_st_api();
+      stapi = driver.create_st_api();
       smapi = CALLOC_STRUCT(st_manager);
       if (smapi)
          smapi->screen = screen;
index ac6a8ffb27ab059f8fccb6e4a9bdd816b9fc95f8..950eb21521f981881216e8ada427172bf29f120a 100644 (file)
  * 
  **************************************************************************/
 
-#ifndef XM_WINSYS_H
-#define XM_WINSYS_H
+#ifndef XM_PUBLIC_H
+#define XM_PUBLIC_H
 
-struct xm_driver;
+#include <X11/Xlib.h>
+
+struct pipe_screen;
+struct st_api;
 
 /* This is the driver interface required by the glx/xlib state tracker. 
  */
 struct xm_driver {
    struct pipe_screen *(*create_pipe_screen)( Display *display );
+   struct st_api *(*create_st_api)( void );
 };
 
 extern void
 xmesa_set_driver( const struct xm_driver *driver );
 
 
-#endif
+#endif /* XM_PUBLIC_H */
index d462776363c616f555e98697ca80da8813c01e26..abe3b5429bc945b658aa2e85648117bb8be1be39 100644 (file)
 #include "xm_api.h"
 #include "xm_st.h"
 
-/* support OpenGL by default */
-#ifndef XMESA_ST_MODULE
-#define XMESA_ST_MODULE st_module_OpenGL
-#endif
-
 struct xmesa_st_framebuffer {
    struct pipe_screen *screen;
    XMesaBuffer buffer;
@@ -267,9 +262,3 @@ xmesa_copy_st_framebuffer(struct st_framebuffer_iface *stfbi,
 {
    /* TODO */
 }
-
-struct st_api *
-xmesa_create_st_api(void)
-{
-   return XMESA_ST_MODULE.create_api();
-}
index 7ca7afe2531b1fa97bc74c408a3f63966a4fd805..b22a8373801b01a1e5d60f385739abea51c1e206 100644 (file)
@@ -33,9 +33,6 @@
 
 #include "xm_api.h"
 
-struct st_api *
-xmesa_create_st_api(void);
-
 struct st_framebuffer_iface *
 xmesa_create_st_framebuffer(struct pipe_screen *screen, XMesaBuffer b);
 
index 50dd99ffce12b49c7aa97e4ec07b562e608fdec9..1e6769367f412c454c0afcec5916e1931c38333a 100644 (file)
@@ -104,9 +104,10 @@ fail:
    return NULL;
 }
 
-struct xm_driver xlib_driver = 
+static struct xm_driver xlib_driver = 
 {
    .create_pipe_screen = swrast_xlib_create_screen,
+   .create_st_api = st_manager_create_api,
 };