[Mesa-dev] [PATCH 11/13] i915g: return tiling in iws->buffer_from_handle
Daniel Vetter
daniel.vetter at ffwll.ch
Fri Nov 19 14:38:28 PST 2010
This is needed to properly implement tiling flags. And the gem
implementation of buffer_from_handle already calls get_tiling, so
it's for free.
Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
---
src/gallium/drivers/i915/i915_resource_texture.c | 5 +++--
src/gallium/drivers/i915/i915_winsys.h | 3 ++-
src/gallium/winsys/i915/drm/i915_drm_buffer.c | 5 +++--
3 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/src/gallium/drivers/i915/i915_resource_texture.c b/src/gallium/drivers/i915/i915_resource_texture.c
index f563d06..0a23dbc 100644
--- a/src/gallium/drivers/i915/i915_resource_texture.c
+++ b/src/gallium/drivers/i915/i915_resource_texture.c
@@ -811,11 +811,11 @@ i915_texture_from_handle(struct pipe_screen * screen,
struct i915_texture *tex;
struct i915_winsys *iws = is->iws;
struct i915_winsys_buffer *buffer;
- unsigned stride;
+ unsigned stride, tiling;
assert(screen);
- buffer = iws->buffer_from_handle(iws, whandle, &stride);
+ buffer = iws->buffer_from_handle(iws, whandle, &tiling, &stride);
/* Only supports one type */
if ((template->target != PIPE_TEXTURE_2D &&
@@ -835,6 +835,7 @@ i915_texture_from_handle(struct pipe_screen * screen,
tex->b.b.screen = screen;
tex->stride = stride;
+ tex->tiling = tiling;
tex->total_nblocksy = align_nblocksy(tex->b.b.format, tex->b.b.height0, 8);
i915_texture_set_level_info(tex, 0, 1);
diff --git a/src/gallium/drivers/i915/i915_winsys.h b/src/gallium/drivers/i915/i915_winsys.h
index 388a8f4..7e34ac6 100644
--- a/src/gallium/drivers/i915/i915_winsys.h
+++ b/src/gallium/drivers/i915/i915_winsys.h
@@ -53,6 +53,7 @@ enum i915_winsys_buffer_type
I915_NEW_VERTEX
};
+/* These need to be in sync with the definitions of libdrm-intel! */
enum i915_winsys_buffer_tile
{
I915_TILE_NONE,
@@ -149,7 +150,7 @@ struct i915_winsys {
struct i915_winsys_buffer *
(*buffer_from_handle)(struct i915_winsys *iws,
struct winsys_handle *whandle,
- unsigned *stride);
+ unsigned *tiling, unsigned *stride);
/**
* Used to implement pipe_screen::resource_get_handle.
diff --git a/src/gallium/winsys/i915/drm/i915_drm_buffer.c b/src/gallium/winsys/i915/drm/i915_drm_buffer.c
index a0a9d65..6a4a831 100644
--- a/src/gallium/winsys/i915/drm/i915_drm_buffer.c
+++ b/src/gallium/winsys/i915/drm/i915_drm_buffer.c
@@ -68,8 +68,8 @@ err:
static struct i915_winsys_buffer *
i915_drm_buffer_from_handle(struct i915_winsys *iws,
- struct winsys_handle *whandle,
- unsigned *stride)
+ struct winsys_handle *whandle,
+ unsigned *tiling, unsigned *stride)
{
struct i915_drm_winsys *idws = i915_drm_winsys(iws);
struct i915_drm_buffer *buf = CALLOC_STRUCT(i915_drm_buffer);
@@ -89,6 +89,7 @@ i915_drm_buffer_from_handle(struct i915_winsys *iws,
drm_intel_bo_get_tiling(buf->bo, &tile, &swizzle);
*stride = whandle->stride;
+ *tiling = tile;
return (struct i915_winsys_buffer *)buf;
--
1.7.1
More information about the mesa-dev
mailing list