[Mesa-dev] [PATCH 2/2] v3d: Fix tiling modifier support to use the new UIF define.

Eric Anholt eric at anholt.net
Fri Jul 6 20:23:51 UTC 2018


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.
---
 src/gallium/drivers/v3d/v3d_resource.c | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/v3d/v3d_resource.c b/src/gallium/drivers/v3d/v3d_resource.c
index cd49c1af52bc..a9c337b69c03 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",
-- 
2.18.0



More information about the mesa-dev mailing list