Mesa (gallium-drm-driver-descriptor): r300g: Move bootstrap code to targets

Jakob Bornecrantz wallbraker at kemper.freedesktop.org
Mon Jun 7 11:16:34 PDT 2010


Module: Mesa
Branch: gallium-drm-driver-descriptor
Commit: 6e3fc2de2a185775a721b3633f420aa3d2c9a949
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6e3fc2de2a185775a721b3633f420aa3d2c9a949

Author: Jakob Bornecrantz <jakob at vmware.com>
Date:   Sun Jun  6 11:56:23 2010 +0100

r300g: Move bootstrap code to targets

---

 src/gallium/drivers/r300/r300_public.h            |    9 +++++++++
 src/gallium/drivers/r300/r300_screen.c            |    3 ++-
 src/gallium/drivers/r300/r300_winsys.h            |    3 ---
 src/gallium/targets/dri-radeong/target.c          |   17 +++++++++++++++--
 src/gallium/targets/egl-radeon/target.c           |   17 +++++++++++++++--
 src/gallium/targets/xorg-radeon/radeon_target.c   |   17 +++++++++++++++--
 src/gallium/winsys/radeon/drm/radeon_drm.c        |   18 +++---------------
 src/gallium/winsys/radeon/drm/radeon_drm.h        |    7 +------
 src/gallium/winsys/radeon/drm/radeon_drm_public.h |    9 +++++++++
 src/gallium/winsys/radeon/drm/radeon_r300.c       |    2 +-
 10 files changed, 70 insertions(+), 32 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_public.h b/src/gallium/drivers/r300/r300_public.h
new file mode 100644
index 0000000..8e7a963
--- /dev/null
+++ b/src/gallium/drivers/r300/r300_public.h
@@ -0,0 +1,9 @@
+
+#ifndef R300_PUBLIC_H
+#define R300_PUBLIC_H
+
+struct r300_winsys_screen;
+
+struct pipe_screen* r300_screen_create(struct r300_winsys_screen *rws);
+
+#endif
diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c
index 497e24b..fd522b8 100644
--- a/src/gallium/drivers/r300/r300_screen.c
+++ b/src/gallium/drivers/r300/r300_screen.c
@@ -30,6 +30,7 @@
 #include "r300_screen_buffer.h"
 #include "r300_state_inlines.h"
 #include "r300_winsys.h"
+#include "r300_public.h"
 
 /* Return the identifier behind whom the brave coders responsible for this
  * amalgamation of code, sweat, and duct tape, routinely obscure their names.
@@ -366,7 +367,7 @@ static int r300_fence_finish(struct pipe_screen *screen,
     return 0; /* 0 == success */
 }
 
-struct pipe_screen* r300_create_screen(struct r300_winsys_screen *rws)
+struct pipe_screen* r300_screen_create(struct r300_winsys_screen *rws)
 {
     struct r300_screen *r300screen = CALLOC_STRUCT(r300_screen);
 
diff --git a/src/gallium/drivers/r300/r300_winsys.h b/src/gallium/drivers/r300/r300_winsys.h
index 6ce2189..8a8888d 100644
--- a/src/gallium/drivers/r300/r300_winsys.h
+++ b/src/gallium/drivers/r300/r300_winsys.h
@@ -180,7 +180,4 @@ struct r300_winsys_screen {
 struct r300_winsys_screen *
 r300_winsys_screen(struct pipe_screen *screen);
 
-/* Creates a new r300 screen. */
-struct pipe_screen* r300_create_screen(struct r300_winsys_screen *rws);
-
 #endif /* R300_WINSYS_H */
diff --git a/src/gallium/targets/dri-radeong/target.c b/src/gallium/targets/dri-radeong/target.c
index 06b6482..2c1beb6 100644
--- a/src/gallium/targets/dri-radeong/target.c
+++ b/src/gallium/targets/dri-radeong/target.c
@@ -1,4 +1,17 @@
 
-#include "target-helpers/drm_api_compat.h"
+#include "state_tracker/drm_driver.h"
+#include "radeon/drm/radeon_drm_public.h"
+#include "r300/r300_public.h"
 
-DRM_API_COMPAT_STRUCT("radeon", "radeon")
+static struct pipe_screen *
+create_screen(int fd)
+{
+   struct r300_winsys_screen *sws;
+   sws = r300_drm_winsys_screen_create(fd);
+   if (!sws)
+      return NULL;
+
+   return r300_screen_create(sws);
+}
+
+DRM_DRIVER_DESCRIPTOR("radeon", "radeon", create_screen)
diff --git a/src/gallium/targets/egl-radeon/target.c b/src/gallium/targets/egl-radeon/target.c
index 03b982a..5117eb8 100644
--- a/src/gallium/targets/egl-radeon/target.c
+++ b/src/gallium/targets/egl-radeon/target.c
@@ -1,7 +1,20 @@
 
-#include "target-helpers/drm_api_compat.h"
+#include "state_tracker/drm_driver.h"
+#include "radeon/drm/radeon_drm_public.h"
+#include "r300/r300_public.h"
 
-DRM_API_COMPAT_STRUCT("radeon", "radeon")
+static struct pipe_screen *
+create_screen(int fd)
+{
+   struct r300_winsys_screen *sws;
+   sws = r300_drm_winsys_screen_create(fd);
+   if (!sws)
+      return NULL;
+
+   return r300_screen_create(sws);
+}
+
+DRM_DRIVER_DESCRIPTOR("radeon", "radeon", create_screen)
 
 /* A poor man's --whole-archive for EGL drivers */
 void *_eglMain(void *);
diff --git a/src/gallium/targets/xorg-radeon/radeon_target.c b/src/gallium/targets/xorg-radeon/radeon_target.c
index 06b6482..2c1beb6 100644
--- a/src/gallium/targets/xorg-radeon/radeon_target.c
+++ b/src/gallium/targets/xorg-radeon/radeon_target.c
@@ -1,4 +1,17 @@
 
-#include "target-helpers/drm_api_compat.h"
+#include "state_tracker/drm_driver.h"
+#include "radeon/drm/radeon_drm_public.h"
+#include "r300/r300_public.h"
 
-DRM_API_COMPAT_STRUCT("radeon", "radeon")
+static struct pipe_screen *
+create_screen(int fd)
+{
+   struct r300_winsys_screen *sws;
+   sws = r300_drm_winsys_screen_create(fd);
+   if (!sws)
+      return NULL;
+
+   return r300_screen_create(sws);
+}
+
+DRM_DRIVER_DESCRIPTOR("radeon", "radeon", create_screen)
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm.c b/src/gallium/winsys/radeon/drm/radeon_drm.c
index 59f1b10..e9a2763 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm.c
@@ -32,9 +32,9 @@
 #include "radeon_drm.h"
 #include "radeon_r300.h"
 #include "radeon_buffer.h"
+#include "radeon_drm_public.h"
 
 #include "r300_winsys.h"
-#include "trace/tr_drm.h"
 
 #include "util/u_memory.h"
 
@@ -153,7 +153,7 @@ static void do_ioctls(int fd, struct radeon_libdrm_winsys* winsys)
 }
 
 /* Create a pipe_screen. */
-struct pipe_screen* radeon_create_screen(struct drm_api* api, int drmFB)
+struct r300_winsys_screen* r300_drm_winsys_screen_create(int drmFB)
 {
     struct radeon_libdrm_winsys* rws; 
     boolean ret;
@@ -171,22 +171,10 @@ struct pipe_screen* radeon_create_screen(struct drm_api* api, int drmFB)
         ret = radeon_setup_winsys(drmFB, rws);
 	if (ret == FALSE)
 	    goto fail;
-        return r300_create_screen(&rws->base);
+        return &rws->base;
     }
 
 fail:
     FREE(rws);
     return NULL;
 }
-
-static struct drm_api radeon_drm_api_hooks = {
-    .name = "radeon",
-    .driver_name = "radeon",
-    .create_screen = radeon_create_screen,
-    .destroy = NULL,
-};
-
-struct drm_api* drm_api_create()
-{
-    return trace_drm_create(&radeon_drm_api_hooks);
-}
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm.h b/src/gallium/winsys/radeon/drm/radeon_drm.h
index 3544c92..df6dd91 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm.h
+++ b/src/gallium/winsys/radeon/drm/radeon_drm.h
@@ -30,12 +30,7 @@
 #ifndef RADEON_DRM_H
 #define RADEON_DRM_H
 
-#include "state_tracker/drm_api.h"
-
-
-struct pipe_screen* radeon_create_screen(struct drm_api* api, int drmFB);
-
-void radeon_destroy_drm_api(struct drm_api* api);
+#include "state_tracker/drm_driver.h"
 
 /* Guess at whether this chipset should use r300g.
  *
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_public.h b/src/gallium/winsys/radeon/drm/radeon_drm_public.h
new file mode 100644
index 0000000..0d96ae8
--- /dev/null
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_public.h
@@ -0,0 +1,9 @@
+
+#ifndef RADEON_DRM_PUBLIC_H
+#define RADEON_DRM_PUBLIC_H
+
+struct r300_winsys_screen;
+
+struct r300_winsys_screen *r300_drm_winsys_screen_create(int drmFD);
+
+#endif
diff --git a/src/gallium/winsys/radeon/drm/radeon_r300.c b/src/gallium/winsys/radeon/drm/radeon_r300.c
index 70ae01a..a9b3657 100644
--- a/src/gallium/winsys/radeon/drm/radeon_r300.c
+++ b/src/gallium/winsys/radeon/drm/radeon_r300.c
@@ -25,7 +25,7 @@
 
 #include "radeon_bo_gem.h"
 #include "radeon_cs_gem.h"
-#include "state_tracker/drm_api.h"
+#include "state_tracker/drm_driver.h"
 
 static struct r300_winsys_buffer *
 radeon_r300_winsys_buffer_create(struct r300_winsys_screen *rws,



More information about the mesa-commit mailing list