From 64849d1236e33b3325e00167c97119af52990ad8 Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz Date: Wed, 1 Jul 2009 01:16:56 +0200 Subject: [PATCH] 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 ++--- .../winsys/drm/intel/gem/intel_be_api.c | 2 +- .../winsys/drm/intel/gem/intel_be_device.c | 19 ++++++++++++++++++- .../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 211ba09fda8..ca8e87af8d1 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 58599daa805..ff5b34f193a 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 41d8a0f93e2..7a533dad9f0 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 3edcbeb558f..9e571862b75 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 d22d11e7237..09d4ba47290 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 2d531279f77..e3630f5d120 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 777161daca0..56d95bd7fe0 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. * -- 2.30.2