summaryrefslogtreecommitdiff
path: root/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2010-04-03 21:52:09 +1000
committerDave Airlie <airlied@redhat.com>2010-04-03 21:54:49 +1000
commit4c26cdbe01619abad413b09317f2842dcf1a4d57 (patch)
tree36f99826c58411e1b02c94b4864f325887486aa2 /src/gallium/winsys/radeon/drm/radeon_drm_buffer.c
parentf618867645b3ce2570958bfacc1faf8c88e7a620 (diff)
r300g: fix color tiling for buffer from X server.
The tiling setup needs a bit of work, but this should be good enough for now, when we get buffers from the kernel we need to store their tiling properties. Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'src/gallium/winsys/radeon/drm/radeon_drm_buffer.c')
-rw-r--r--src/gallium/winsys/radeon/drm/radeon_drm_buffer.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c b/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c
index 66f6132245..5fd20cc775 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c
@@ -304,7 +304,24 @@ boolean radeon_drm_bufmgr_get_handle(struct pb_buffer *_buf,
}
return TRUE;
}
-
+
+void radeon_drm_bufmgr_get_tiling(struct pb_buffer *_buf,
+ enum r300_buffer_tiling *microtiled,
+ enum r300_buffer_tiling *macrotiled)
+{
+ struct radeon_drm_buffer *buf = get_drm_buffer(_buf);
+ uint32_t flags = 0, pitch;
+
+ radeon_bo_get_tiling(buf->bo, &flags, &pitch);
+
+ *microtiled = R300_BUFFER_LINEAR;
+ *macrotiled = R300_BUFFER_LINEAR;
+ if (flags & RADEON_BO_FLAGS_MICRO_TILE)
+ *microtiled = R300_BUFFER_TILED;
+
+ if (flags & RADEON_BO_FLAGS_MACRO_TILE)
+ *macrotiled = R300_BUFFER_TILED;
+}
void radeon_drm_bufmgr_set_tiling(struct pb_buffer *_buf,
enum r300_buffer_tiling microtiled,