Module: Mesa
Branch: gallium-st-api
Commit: 813c58d77e21cb59adb914b4b4ee26be758ff0ea
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=813c58d77e21cb59adb914b4b4ee26be758ff0ea

Author: Chia-I Wu <[email protected]>
Date:   Sat Mar 13 15:57:15 2010 +0800

st/glx: Make xmesa_create_st_api a callback of xm_driver.

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    |    2 +-
 src/gallium/state_trackers/glx/xlib/xm_public.h |   12 ++++++++----
 src/gallium/state_trackers/glx/xlib/xm_st.c     |   11 -----------
 src/gallium/state_trackers/glx/xlib/xm_st.h     |    3 ---
 src/gallium/targets/libgl-xlib/xlib.c           |    3 ++-
 5 files changed, 11 insertions(+), 20 deletions(-)

diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c 
b/src/gallium/state_trackers/glx/xlib/xm_api.c
index 3ea4d77..82384a4 100644
--- a/src/gallium/state_trackers/glx/xlib/xm_api.c
+++ b/src/gallium/state_trackers/glx/xlib/xm_api.c
@@ -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;
diff --git a/src/gallium/state_trackers/glx/xlib/xm_public.h 
b/src/gallium/state_trackers/glx/xlib/xm_public.h
index ac6a8ff..950eb21 100644
--- a/src/gallium/state_trackers/glx/xlib/xm_public.h
+++ b/src/gallium/state_trackers/glx/xlib/xm_public.h
@@ -26,19 +26,23 @@
  * 
  **************************************************************************/
 
-#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 */
diff --git a/src/gallium/state_trackers/glx/xlib/xm_st.c 
b/src/gallium/state_trackers/glx/xlib/xm_st.c
index d462776..abe3b54 100644
--- a/src/gallium/state_trackers/glx/xlib/xm_st.c
+++ b/src/gallium/state_trackers/glx/xlib/xm_st.c
@@ -31,11 +31,6 @@
 #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();
-}
diff --git a/src/gallium/state_trackers/glx/xlib/xm_st.h 
b/src/gallium/state_trackers/glx/xlib/xm_st.h
index 7ca7afe..b22a837 100644
--- a/src/gallium/state_trackers/glx/xlib/xm_st.h
+++ b/src/gallium/state_trackers/glx/xlib/xm_st.h
@@ -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);
 
diff --git a/src/gallium/targets/libgl-xlib/xlib.c 
b/src/gallium/targets/libgl-xlib/xlib.c
index 50dd99f..1e67693 100644
--- a/src/gallium/targets/libgl-xlib/xlib.c
+++ b/src/gallium/targets/libgl-xlib/xlib.c
@@ -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,
 };
 
 

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to