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.
This commit is contained in:
Eric Anholt 2018-06-20 16:54:31 -07:00
parent 6c0482e176
commit 2c6279d58b
1 changed files with 16 additions and 3 deletions

View File

@ -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",