diff options
author | Eric Anholt <[email protected]> | 2018-06-20 16:54:31 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2018-07-18 10:37:49 -0700 |
commit | 2c6279d58b96767b158a8955ec80fde3803928ae (patch) | |
tree | 62839fe65ed9af6fe05abb8a6e2d5e09a9d83615 /src/gallium | |
parent | 6c0482e1768bd4bb53f77ac5bd40c99807922860 (diff) |
v3d: Fix tiling modifier support to use the new UIF define.
You can't use T tiled buffers on V3D 3.x and newer, it's been replaced
with a newer layout shared with other hardware blocks.
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/v3d/v3d_resource.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/gallium/drivers/v3d/v3d_resource.c b/src/gallium/drivers/v3d/v3d_resource.c index 3df03d71df4..8bf6a97c394 100644 --- a/src/gallium/drivers/v3d/v3d_resource.c +++ b/src/gallium/drivers/v3d/v3d_resource.c @@ -324,6 +324,17 @@ v3d_resource_get_handle(struct pipe_screen *pscreen, */ bo->private = false; + if (rsc->tiled) { + /* A shared tiled buffer should always be allocated as UIF, + * not UBLINEAR or LT. + */ + assert(rsc->slices[0].tiling == VC5_TILING_UIF_XOR || + rsc->slices[0].tiling == VC5_TILING_UIF_NO_XOR); + whandle->modifier = DRM_FORMAT_MOD_BROADCOM_UIF; + } else { + whandle->modifier = DRM_FORMAT_MOD_LINEAR; + } + switch (whandle->type) { case WINSYS_HANDLE_TYPE_SHARED: return v3d_bo_flink(bo, &whandle->handle); @@ -651,7 +662,7 @@ v3d_resource_create_with_modifiers(struct pipe_screen *pscreen, linear_ok = true; rsc->tiled = should_tile; } else if (should_tile && - find_modifier(DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED, + find_modifier(DRM_FORMAT_MOD_BROADCOM_UIF, modifiers, count)) { rsc->tiled = true; } else if (linear_ok) { @@ -697,10 +708,12 @@ v3d_resource_from_handle(struct pipe_screen *pscreen, switch (whandle->modifier) { case DRM_FORMAT_MOD_LINEAR: - case DRM_FORMAT_MOD_INVALID: rsc->tiled = false; break; - /* XXX: UIF */ + case DRM_FORMAT_MOD_BROADCOM_UIF: + case DRM_FORMAT_MOD_INVALID: + rsc->tiled = true; + break; default: fprintf(stderr, "Attempt to import unsupported modifier 0x%llx\n", |