intel: Add interface for getting tiling mode of a bo.
parent
d9c2f65dd8
commit
993383873c
|
@ -192,3 +192,13 @@ int dri_bo_set_tiling(dri_bo *bo, uint32_t *tiling_mode)
|
|||
*tiling_mode = I915_TILING_NONE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int dri_bo_get_tiling(dri_bo *bo, uint32_t *tiling_mode, uint32_t *swizzle_mode)
|
||||
{
|
||||
if (bo->bufmgr->bo_get_tiling)
|
||||
return bo->bufmgr->bo_get_tiling(bo, tiling_mode, swizzle_mode);
|
||||
|
||||
*tiling_mode = I915_TILING_NONE;
|
||||
*swizzle_mode = I915_BIT_6_SWIZZLE_NONE;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -87,6 +87,8 @@ int dri_bo_emit_reloc(dri_bo *reloc_buf,
|
|||
int dri_bo_pin(dri_bo *buf, uint32_t alignment);
|
||||
int dri_bo_unpin(dri_bo *buf);
|
||||
int dri_bo_set_tiling(dri_bo *buf, uint32_t *tiling_mode);
|
||||
int dri_bo_get_tiling(dri_bo *buf, uint32_t *tiling_mode,
|
||||
uint32_t *swizzle_mode);
|
||||
int dri_bo_flink(dri_bo *buf, uint32_t *name);
|
||||
|
||||
/* intel_bufmgr_gem.c */
|
||||
|
|
|
@ -872,6 +872,28 @@ dri_gem_bo_set_tiling(dri_bo *bo, uint32_t *tiling_mode)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
dri_gem_bo_get_tiling(dri_bo *bo, uint32_t *tiling_mode, uint32_t *swizzle_mode)
|
||||
{
|
||||
dri_bufmgr_gem *bufmgr_gem = (dri_bufmgr_gem *)bo->bufmgr;
|
||||
dri_bo_gem *bo_gem = (dri_bo_gem *)bo;
|
||||
struct drm_i915_gem_get_tiling get_tiling;
|
||||
int ret;
|
||||
|
||||
get_tiling.handle = bo_gem->gem_handle;
|
||||
|
||||
ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_GET_TILING, &get_tiling);
|
||||
if (ret != 0) {
|
||||
*tiling_mode = I915_TILING_NONE;
|
||||
*swizzle_mode = I915_BIT_6_SWIZZLE_NONE;
|
||||
return -errno;
|
||||
}
|
||||
|
||||
*tiling_mode = get_tiling.tiling_mode;
|
||||
*swizzle_mode = get_tiling.swizzle_mode;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
dri_gem_bo_flink(dri_bo *bo, uint32_t *name)
|
||||
{
|
||||
|
@ -959,6 +981,7 @@ intel_bufmgr_gem_init(int fd, int batch_size)
|
|||
bufmgr_gem->bufmgr.bo_emit_reloc = dri_gem_bo_emit_reloc;
|
||||
bufmgr_gem->bufmgr.bo_pin = dri_gem_bo_pin;
|
||||
bufmgr_gem->bufmgr.bo_unpin = dri_gem_bo_unpin;
|
||||
bufmgr_gem->bufmgr.bo_get_tiling = dri_gem_bo_get_tiling;
|
||||
bufmgr_gem->bufmgr.bo_set_tiling = dri_gem_bo_set_tiling;
|
||||
bufmgr_gem->bufmgr.bo_flink = dri_gem_bo_flink;
|
||||
bufmgr_gem->bufmgr.bo_exec = dri_gem_bo_exec;
|
||||
|
|
|
@ -149,6 +149,15 @@ struct _dri_bufmgr {
|
|||
* \param tiling_mode desired, and returned tiling mode
|
||||
*/
|
||||
int (*bo_set_tiling) (dri_bo *bo, uint32_t *tiling_mode);
|
||||
/**
|
||||
* Get the current tiling (and resulting swizzling) mode for the bo.
|
||||
*
|
||||
* \param buf Buffer to get tiling mode for
|
||||
* \param tiling_mode returned tiling mode
|
||||
* \param swizzle_mode returned swizzling mode
|
||||
*/
|
||||
int (*bo_get_tiling) (dri_bo *bo, uint32_t *tiling_mode,
|
||||
uint32_t *swizzle_mode);
|
||||
/**
|
||||
* Create a visible name for a buffer which can be used by other apps
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue