summaryrefslogtreecommitdiff
path: root/src/gallium/winsys/r600/drm/radeon_bo.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2010-10-18 09:45:58 +1000
committerDave Airlie <airlied@redhat.com>2010-10-18 13:46:42 +1000
commit8a74f7422bedb419f3527bb1ccd60e1e9220502c (patch)
tree47d850865e467744e57cc10d70c2961f57770356 /src/gallium/winsys/r600/drm/radeon_bo.c
parent375613afe38e0704b4ce38e64765b12d9660a846 (diff)
r600g: retrieve tiling info from kernel for shared buffers.
we need to know if the back is tiled so we can blit from it properly.
Diffstat (limited to 'src/gallium/winsys/r600/drm/radeon_bo.c')
-rw-r--r--src/gallium/winsys/r600/drm/radeon_bo.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/gallium/winsys/r600/drm/radeon_bo.c b/src/gallium/winsys/r600/drm/radeon_bo.c
index 14a00161c8..9d664b7e53 100644
--- a/src/gallium/winsys/r600/drm/radeon_bo.c
+++ b/src/gallium/winsys/r600/drm/radeon_bo.c
@@ -200,3 +200,22 @@ int radeon_bo_busy(struct radeon *radeon, struct radeon_bo *bo, uint32_t *domain
*domain = args.domain;
return ret;
}
+
+int radeon_bo_get_tiling_flags(struct radeon *radeon,
+ struct radeon_bo *bo,
+ uint32_t *tiling_flags,
+ uint32_t *pitch)
+{
+ struct drm_radeon_gem_get_tiling args;
+ int ret;
+
+ args.handle = bo->handle;
+ ret = drmCommandWriteRead(radeon->fd, DRM_RADEON_GEM_GET_TILING,
+ &args, sizeof(args));
+ if (ret)
+ return ret;
+
+ *tiling_flags = args.tiling_flags;
+ *pitch = args.pitch;
+ return ret;
+}