Mesa (master): radeon-gallium: Adapt to drm_api changes.

Corbin Simpson csimpson at kemper.freedesktop.org
Thu Jul 2 05:41:56 UTC 2009


Module: Mesa
Branch: master
Commit: 338db0af61910be9c9990ef1cda2166c3de17b78
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=338db0af61910be9c9990ef1cda2166c3de17b78

Author: Corbin Simpson <MostAwesomeDude at gmail.com>
Date:   Wed Jul  1 22:33:17 2009 -0700

radeon-gallium: Adapt to drm_api changes.

Note that trace debugging is temporarily gone. I'll rework it later.

---

 src/gallium/winsys/drm/radeon/core/radeon_drm.c |   37 ++++++++++++----------
 src/gallium/winsys/drm/radeon/core/radeon_drm.h |   19 ++++++++----
 2 files changed, 33 insertions(+), 23 deletions(-)

diff --git a/src/gallium/winsys/drm/radeon/core/radeon_drm.c b/src/gallium/winsys/drm/radeon/core/radeon_drm.c
index 5406d2b..556d3f5 100644
--- a/src/gallium/winsys/drm/radeon/core/radeon_drm.c
+++ b/src/gallium/winsys/drm/radeon/core/radeon_drm.c
@@ -30,12 +30,9 @@
 
 #include "radeon_drm.h"
 
-#ifdef DEBUG
-#include "trace/trace_drm.h"
-#endif
-
 /* Create a pipe_screen. */
-struct pipe_screen* radeon_create_screen(int drmFB,
+struct pipe_screen* radeon_create_screen(struct drm_api* api,
+                                         int drmFB,
 					 struct drm_create_screen_arg *arg)
 {
     struct radeon_winsys* winsys = radeon_pipe_winsys(drmFB);
@@ -50,7 +47,8 @@ struct pipe_screen* radeon_create_screen(int drmFB,
 }
 
 /* Create a pipe_context. */
-struct pipe_context* radeon_create_context(struct pipe_screen* screen)
+struct pipe_context* radeon_create_context(struct drm_api* api,
+                                           struct pipe_screen* screen)
 {
     if (getenv("RADEON_SOFTPIPE")) {
         return radeon_create_softpipe(screen->winsys);
@@ -59,16 +57,19 @@ struct pipe_context* radeon_create_context(struct pipe_screen* screen)
     }
 }
 
-boolean radeon_buffer_from_texture(struct pipe_texture* texture,
+boolean radeon_buffer_from_texture(struct drm_api* api,
+                                   struct pipe_texture* texture,
                                    struct pipe_buffer** buffer,
                                    unsigned* stride)
 {
-    return FALSE;
+    /* XXX fix this */
+    return r300_get_texture_buffer(texture, buffer, stride);
 }
 
 /* Create a buffer from a handle. */
 /* XXX what's up with name? */
-struct pipe_buffer* radeon_buffer_from_handle(struct pipe_screen* screen,
+struct pipe_buffer* radeon_buffer_from_handle(struct drm_api* api,
+                                              struct pipe_screen* screen,
                                               const char* name,
                                               unsigned handle)
 {
@@ -95,7 +96,8 @@ struct pipe_buffer* radeon_buffer_from_handle(struct pipe_screen* screen,
     return &radeon_buffer->base;
 }
 
-boolean radeon_handle_from_buffer(struct pipe_screen* screen,
+boolean radeon_handle_from_buffer(struct drm_api* api,
+                                  struct pipe_screen* screen,
                                   struct pipe_buffer* buffer,
                                   unsigned* handle)
 {
@@ -105,7 +107,8 @@ boolean radeon_handle_from_buffer(struct pipe_screen* screen,
     return TRUE;
 }
 
-boolean radeon_global_handle_from_buffer(struct pipe_screen* screen,
+boolean radeon_global_handle_from_buffer(struct drm_api* api,
+                                         struct pipe_screen* screen,
                                          struct pipe_buffer* buffer,
                                          unsigned* handle)
 {
@@ -116,16 +119,16 @@ boolean radeon_global_handle_from_buffer(struct pipe_screen* screen,
     return TRUE;
 }
 
-#ifdef DEBUG
-struct drm_api hooks = {
-#else
 struct drm_api drm_api_hooks = {
-#endif
     .create_screen = radeon_create_screen,
     .create_context = radeon_create_context,
-    /* XXX fix this */
-    .buffer_from_texture = r300_get_texture_buffer,
+    .buffer_from_texture = radeon_buffer_from_texture,
     .buffer_from_handle = radeon_buffer_from_handle,
     .handle_from_buffer = radeon_handle_from_buffer,
     .global_handle_from_buffer = radeon_global_handle_from_buffer,
 };
+
+struct drm_api* drm_api_create()
+{
+    return &drm_api_hooks;
+}
diff --git a/src/gallium/winsys/drm/radeon/core/radeon_drm.h b/src/gallium/winsys/drm/radeon/core/radeon_drm.h
index 049f998..8560f71 100644
--- a/src/gallium/winsys/drm/radeon/core/radeon_drm.h
+++ b/src/gallium/winsys/drm/radeon/core/radeon_drm.h
@@ -40,25 +40,32 @@
 #include "radeon_r300.h"
 #include "radeon_winsys_softpipe.h"
 
-struct pipe_screen* radeon_create_screen(int drmFB,
+struct pipe_screen* radeon_create_screen(struct drm_api* api,
+                                         int drmFB,
 					 struct drm_create_screen_arg *arg);
 
-struct pipe_context* radeon_create_context(struct pipe_screen* screen);
+struct pipe_context* radeon_create_context(struct drm_api* api,
+                                           struct pipe_screen* screen);
 
-boolean radeon_buffer_from_texture(struct pipe_texture* texture,
+boolean radeon_buffer_from_texture(struct drm_api* api,
+                                   struct pipe_texture* texture,
                                    struct pipe_buffer** buffer,
                                    unsigned* stride);
 
-struct pipe_buffer* radeon_buffer_from_handle(struct pipe_screen* screen,
+struct pipe_buffer* radeon_buffer_from_handle(struct drm_api* api,
+                                              struct pipe_screen* screen,
                                               const char* name,
                                               unsigned handle);
 
-boolean radeon_handle_from_buffer(struct pipe_screen* screen,
+boolean radeon_handle_from_buffer(struct drm_api* api,
+                                  struct pipe_screen* screen,
                                   struct pipe_buffer* buffer,
                                   unsigned* handle);
 
-boolean radeon_global_handle_from_buffer(struct pipe_screen* screen,
+boolean radeon_global_handle_from_buffer(struct drm_api* api,
+                                         struct pipe_screen* screen,
                                          struct pipe_buffer* buffer,
                                          unsigned* handle);
 
+void radeon_destroy_drm_api(struct drm_api* api);
 #endif




More information about the mesa-commit mailing list