Mesa (master): drm/st: Remove drm_api struct from drivers

Jakob Bornecrantz wallbraker at kemper.freedesktop.org
Tue Jun 30 23:20:30 UTC 2009


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

Author: Jakob Bornecrantz <jakob at vmware.com>
Date:   Wed Jul  1 01:16:56 2009 +0200

drm/st: Remove drm_api struct from drivers

	Remove the drm_api from the functions in the softpipe and
	i915simple drivers. Create wrapper functions in the
	backends instead.

---

 src/gallium/drivers/i915simple/i915_texture.c      |    3 +--
 src/gallium/drivers/i915simple/i915_winsys.h       |    4 +---
 src/gallium/drivers/softpipe/sp_texture.c          |    3 +--
 src/gallium/drivers/softpipe/sp_winsys.h           |    5 ++---
 src/gallium/winsys/drm/intel/gem/intel_be_api.c    |    2 +-
 src/gallium/winsys/drm/intel/gem/intel_be_device.c |   19 ++++++++++++++++++-
 src/gallium/winsys/drm/intel/gem/intel_be_device.h |    9 +++++++++
 7 files changed, 33 insertions(+), 12 deletions(-)

diff --git a/src/gallium/drivers/i915simple/i915_texture.c b/src/gallium/drivers/i915simple/i915_texture.c
index 211ba09..ca8e87a 100644
--- a/src/gallium/drivers/i915simple/i915_texture.c
+++ b/src/gallium/drivers/i915simple/i915_texture.c
@@ -738,8 +738,7 @@ i915_init_screen_texture_functions(struct pipe_screen *screen)
    screen->tex_surface_destroy = i915_tex_surface_destroy;
 }
 
-boolean i915_get_texture_buffer( struct drm_api *api,
-                                 struct pipe_texture *texture,
+boolean i915_get_texture_buffer( struct pipe_texture *texture,
                                  struct pipe_buffer **buf,
                                  unsigned *stride )
 {
diff --git a/src/gallium/drivers/i915simple/i915_winsys.h b/src/gallium/drivers/i915simple/i915_winsys.h
index 58599da..ff5b34f 100644
--- a/src/gallium/drivers/i915simple/i915_winsys.h
+++ b/src/gallium/drivers/i915simple/i915_winsys.h
@@ -61,7 +61,6 @@ struct pipe_buffer;
 struct pipe_fence_handle;
 struct pipe_winsys;
 struct pipe_screen;
-struct drm_api;
 
 
 /**
@@ -133,8 +132,7 @@ struct pipe_context *i915_create_context( struct pipe_screen *screen,
  *
  * This is needed for example kms.
  */
-boolean i915_get_texture_buffer( struct drm_api *api,
-                                 struct pipe_texture *texture,
+boolean i915_get_texture_buffer( struct pipe_texture *texture,
                                  struct pipe_buffer **buf,
                                  unsigned *stride );
 
diff --git a/src/gallium/drivers/softpipe/sp_texture.c b/src/gallium/drivers/softpipe/sp_texture.c
index 41d8a0f..7a533da 100644
--- a/src/gallium/drivers/softpipe/sp_texture.c
+++ b/src/gallium/drivers/softpipe/sp_texture.c
@@ -403,8 +403,7 @@ softpipe_init_screen_texture_funcs(struct pipe_screen *screen)
 
 
 boolean
-softpipe_get_texture_buffer( struct drm_api *api,
-                             struct pipe_texture *texture,
+softpipe_get_texture_buffer( struct pipe_texture *texture,
                              struct pipe_buffer **buf,
                              unsigned *stride )
 {
diff --git a/src/gallium/drivers/softpipe/sp_winsys.h b/src/gallium/drivers/softpipe/sp_winsys.h
index 3edcbeb..9e57186 100644
--- a/src/gallium/drivers/softpipe/sp_winsys.h
+++ b/src/gallium/drivers/softpipe/sp_winsys.h
@@ -39,7 +39,7 @@
 extern "C" {
 #endif
 
-struct drm_api;
+
 struct pipe_screen;
 struct pipe_winsys;
 struct pipe_context;
@@ -53,8 +53,7 @@ softpipe_create_screen(struct pipe_winsys *);
 
 
 boolean
-softpipe_get_texture_buffer( struct drm_api *api,
-                             struct pipe_texture *texture,
+softpipe_get_texture_buffer( struct pipe_texture *texture,
                              struct pipe_buffer **buf,
                              unsigned *stride );
 
diff --git a/src/gallium/winsys/drm/intel/gem/intel_be_api.c b/src/gallium/winsys/drm/intel/gem/intel_be_api.c
index d22d11e..09d4ba4 100644
--- a/src/gallium/winsys/drm/intel/gem/intel_be_api.c
+++ b/src/gallium/winsys/drm/intel/gem/intel_be_api.c
@@ -14,7 +14,7 @@ struct drm_api intel_be_drm_api =
 	.create_context = intel_be_create_context,
 	/* intel_be_device.c */
 	.create_screen = intel_be_create_screen,
-	.buffer_from_texture = i915_get_texture_buffer,
+	.buffer_from_texture = intel_be_get_texture_buffer,
 	.buffer_from_handle = intel_be_buffer_from_handle,
 	.handle_from_buffer = intel_be_handle_from_buffer,
 	.global_handle_from_buffer = intel_be_global_handle_from_buffer,
diff --git a/src/gallium/winsys/drm/intel/gem/intel_be_device.c b/src/gallium/winsys/drm/intel/gem/intel_be_device.c
index 2d53127..e3630f5 100644
--- a/src/gallium/winsys/drm/intel/gem/intel_be_device.c
+++ b/src/gallium/winsys/drm/intel/gem/intel_be_device.c
@@ -142,6 +142,24 @@ err:
 	return NULL;
 }
 
+boolean
+intel_be_get_texture_buffer(struct drm_api *api,
+                            struct pipe_texture *texture,
+                            struct pipe_buffer **buffer,
+                            unsigned *stride)
+{
+	struct intel_be_device *dev;
+
+	if (!texture)
+		return FALSE;
+
+	dev = intel_be_device(texture->screen->winsys);
+	if (dev->softpipe)
+		return softpipe_get_texture_buffer(texture, buffer, stride);
+	else
+		return i915_get_texture_buffer(texture, buffer, stride);
+}
+
 struct pipe_buffer *
 intel_be_buffer_from_handle(struct drm_api *api,
                             struct pipe_screen *screen,
@@ -344,7 +362,6 @@ intel_be_create_screen(struct drm_api *api, int drmFD,
 
 	if (dev->softpipe) {
 		screen = softpipe_create_screen(&dev->base);
-		intel_be_drm_api.buffer_from_texture = softpipe_get_texture_buffer;
 	} else
 		screen = i915_create_screen(&dev->base, deviceID);
 
diff --git a/src/gallium/winsys/drm/intel/gem/intel_be_device.h b/src/gallium/winsys/drm/intel/gem/intel_be_device.h
index 777161d..56d95bd 100644
--- a/src/gallium/winsys/drm/intel/gem/intel_be_device.h
+++ b/src/gallium/winsys/drm/intel/gem/intel_be_device.h
@@ -52,6 +52,15 @@ struct intel_be_buffer {
 	unsigned flink;
 };
 
+/*
+ * Wrapper for driver get_texture_buffer functions.
+ */
+boolean
+intel_be_get_texture_buffer(struct drm_api *api,
+                            struct pipe_texture *texture,
+                            struct pipe_buffer **buffer,
+                            unsigned *stride);
+
 /**
  * Create a be buffer from a drm bo handle.
  *




More information about the mesa-commit mailing list