Mesa (main): v3d,v3dv: move TFU register definition to a common header

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Nov 17 10:25:23 UTC 2021


Module: Mesa
Branch: main
Commit: cbf0d83eace937c1a5cf7e12759985e32740b520
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=cbf0d83eace937c1a5cf7e12759985e32740b520

Author: Alejandro Piñeiro <apinheiro at igalia.com>
Date:   Wed Nov 17 10:44:49 2021 +0100

v3d,v3dv: move TFU register definition to a common header

We are using the same definitions for both OpenGL and Vulkan, so let's
move it to common.

As we are here we are also adding versioning on the TFU register
definition. Those are basically register bit places, so really likely
to change between versions.

Adding 33 as it is the first version they got defined.

Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13832>

---

 src/broadcom/common/v3d_tfu.h           | 51 +++++++++++++++++++++++++++++++++
 src/broadcom/vulkan/v3dv_meta_common.h  | 24 ----------------
 src/broadcom/vulkan/v3dvx_meta_common.c | 15 +++++-----
 src/gallium/drivers/v3d/v3d_blit.c      | 45 +++++++----------------------
 4 files changed, 70 insertions(+), 65 deletions(-)

diff --git a/src/broadcom/common/v3d_tfu.h b/src/broadcom/common/v3d_tfu.h
new file mode 100644
index 00000000000..ebef66feb8a
--- /dev/null
+++ b/src/broadcom/common/v3d_tfu.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright © 2021 Raspberry Pi
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#ifndef V3D_TFU_H
+#define V3D_TFU_H
+
+/* Disable level 0 write, just write following mipmaps */
+#define V3D33_TFU_IOA_DIMTW (1 << 0)
+#define V3D33_TFU_IOA_FORMAT_SHIFT 3
+#define V3D33_TFU_IOA_FORMAT_LINEARTILE 3
+#define V3D33_TFU_IOA_FORMAT_UBLINEAR_1_COLUMN 4
+#define V3D33_TFU_IOA_FORMAT_UBLINEAR_2_COLUMN 5
+#define V3D33_TFU_IOA_FORMAT_UIF_NO_XOR 6
+#define V3D33_TFU_IOA_FORMAT_UIF_XOR 7
+
+#define V3D33_TFU_ICFG_NUMMM_SHIFT 5
+#define V3D33_TFU_ICFG_TTYPE_SHIFT 9
+
+#define V3D33_TFU_ICFG_OPAD_SHIFT 22
+
+#define V3D33_TFU_ICFG_FORMAT_SHIFT 18
+#define V3D33_TFU_ICFG_FORMAT_RASTER 0
+#define V3D33_TFU_ICFG_FORMAT_SAND_128 1
+#define V3D33_TFU_ICFG_FORMAT_SAND_256 2
+#define V3D33_TFU_ICFG_FORMAT_LINEARTILE 11
+#define V3D33_TFU_ICFG_FORMAT_UBLINEAR_1_COLUMN 12
+#define V3D33_TFU_ICFG_FORMAT_UBLINEAR_2_COLUMN 13
+#define V3D33_TFU_ICFG_FORMAT_UIF_NO_XOR 14
+#define V3D33_TFU_ICFG_FORMAT_UIF_XOR 15
+
+#endif
diff --git a/src/broadcom/vulkan/v3dv_meta_common.h b/src/broadcom/vulkan/v3dv_meta_common.h
index 555b55f90b7..e7d0bd0db97 100644
--- a/src/broadcom/vulkan/v3dv_meta_common.h
+++ b/src/broadcom/vulkan/v3dv_meta_common.h
@@ -23,30 +23,6 @@
 #ifndef V3DV_META_COMMON_H
 #define V3DV_META_COMMON_H
 
-/* Disable level 0 write, just write following mipmaps */
-#define V3D_TFU_IOA_DIMTW (1 << 0)
-#define V3D_TFU_IOA_FORMAT_SHIFT 3
-#define V3D_TFU_IOA_FORMAT_LINEARTILE 3
-#define V3D_TFU_IOA_FORMAT_UBLINEAR_1_COLUMN 4
-#define V3D_TFU_IOA_FORMAT_UBLINEAR_2_COLUMN 5
-#define V3D_TFU_IOA_FORMAT_UIF_NO_XOR 6
-#define V3D_TFU_IOA_FORMAT_UIF_XOR 7
-
-#define V3D_TFU_ICFG_NUMMM_SHIFT 5
-#define V3D_TFU_ICFG_TTYPE_SHIFT 9
-
-#define V3D_TFU_ICFG_OPAD_SHIFT 22
-
-#define V3D_TFU_ICFG_FORMAT_SHIFT 18
-#define V3D_TFU_ICFG_FORMAT_RASTER 0
-#define V3D_TFU_ICFG_FORMAT_SAND_128 1
-#define V3D_TFU_ICFG_FORMAT_SAND_256 2
-#define V3D_TFU_ICFG_FORMAT_LINEARTILE 11
-#define V3D_TFU_ICFG_FORMAT_UBLINEAR_1_COLUMN 12
-#define V3D_TFU_ICFG_FORMAT_UBLINEAR_2_COLUMN 13
-#define V3D_TFU_ICFG_FORMAT_UIF_NO_XOR 14
-#define V3D_TFU_ICFG_FORMAT_UIF_XOR 15
-
 /**
  * Copy/Clear operations implemented in v3dv_meta_*.c that use the TLB hardware
  * need to figure out TLB programming from the target image data instead of an
diff --git a/src/broadcom/vulkan/v3dvx_meta_common.c b/src/broadcom/vulkan/v3dvx_meta_common.c
index 1dfbbfc57eb..eedc3f4c834 100644
--- a/src/broadcom/vulkan/v3dvx_meta_common.c
+++ b/src/broadcom/vulkan/v3dvx_meta_common.c
@@ -25,6 +25,7 @@
 #include "v3dv_meta_common.h"
 
 #include "broadcom/common/v3d_macros.h"
+#include "broadcom/common/v3d_tfu.h"
 #include "broadcom/cle/v3dx_pack.h"
 #include "broadcom/compiler/v3d_compiler.h"
 
@@ -840,19 +841,19 @@ v3dX(meta_emit_tfu_job)(struct v3dv_cmd_buffer *cmd_buffer,
    tfu.iia |= src_offset;
 
    if (src_tiling == V3D_TILING_RASTER) {
-      tfu.icfg = V3D_TFU_ICFG_FORMAT_RASTER << V3D_TFU_ICFG_FORMAT_SHIFT;
+      tfu.icfg = V3D33_TFU_ICFG_FORMAT_RASTER << V3D33_TFU_ICFG_FORMAT_SHIFT;
    } else {
-      tfu.icfg = (V3D_TFU_ICFG_FORMAT_LINEARTILE +
+      tfu.icfg = (V3D33_TFU_ICFG_FORMAT_LINEARTILE +
                   (src_tiling - V3D_TILING_LINEARTILE)) <<
-                   V3D_TFU_ICFG_FORMAT_SHIFT;
+                   V3D33_TFU_ICFG_FORMAT_SHIFT;
    }
-   tfu.icfg |= format->tex_type << V3D_TFU_ICFG_TTYPE_SHIFT;
+   tfu.icfg |= format->tex_type << V3D33_TFU_ICFG_TTYPE_SHIFT;
 
    tfu.ioa = dst_offset;
 
-   tfu.ioa |= (V3D_TFU_IOA_FORMAT_LINEARTILE +
+   tfu.ioa |= (V3D33_TFU_IOA_FORMAT_LINEARTILE +
                (dst_tiling - V3D_TILING_LINEARTILE)) <<
-                V3D_TFU_IOA_FORMAT_SHIFT;
+                V3D33_TFU_IOA_FORMAT_SHIFT;
 
    switch (src_tiling) {
    case V3D_TILING_UIF_NO_XOR:
@@ -875,7 +876,7 @@ v3dX(meta_emit_tfu_job)(struct v3dv_cmd_buffer *cmd_buffer,
       uint32_t implicit_padded_height = align(height, uif_block_h);
       uint32_t icfg = (dst_padded_height_or_stride - implicit_padded_height) /
                       uif_block_h;
-      tfu.icfg |= icfg << V3D_TFU_ICFG_OPAD_SHIFT;
+      tfu.icfg |= icfg << V3D33_TFU_ICFG_OPAD_SHIFT;
    }
 
    v3dv_cmd_buffer_add_tfu_job(cmd_buffer, &tfu);
diff --git a/src/gallium/drivers/v3d/v3d_blit.c b/src/gallium/drivers/v3d/v3d_blit.c
index 967d0d6d1d4..b337218cb00 100644
--- a/src/gallium/drivers/v3d/v3d_blit.c
+++ b/src/gallium/drivers/v3d/v3d_blit.c
@@ -27,6 +27,7 @@
 #include "compiler/nir/nir_builder.h"
 #include "v3d_context.h"
 #include "broadcom/common/v3d_tiling.h"
+#include "broadcom/common/v3d_tfu.h"
 
 void
 v3d_blitter_save(struct v3d_context *v3d)
@@ -190,30 +191,6 @@ v3d_stencil_blit(struct pipe_context *ctx, struct pipe_blit_info *info)
         info->mask &= ~PIPE_MASK_S;
 }
 
-/* Disable level 0 write, just write following mipmaps */
-#define V3D_TFU_IOA_DIMTW (1 << 0)
-#define V3D_TFU_IOA_FORMAT_SHIFT 3
-#define V3D_TFU_IOA_FORMAT_LINEARTILE 3
-#define V3D_TFU_IOA_FORMAT_UBLINEAR_1_COLUMN 4
-#define V3D_TFU_IOA_FORMAT_UBLINEAR_2_COLUMN 5
-#define V3D_TFU_IOA_FORMAT_UIF_NO_XOR 6
-#define V3D_TFU_IOA_FORMAT_UIF_XOR 7
-
-#define V3D_TFU_ICFG_NUMMM_SHIFT 5
-#define V3D_TFU_ICFG_TTYPE_SHIFT 9
-
-#define V3D_TFU_ICFG_OPAD_SHIFT 22
-
-#define V3D_TFU_ICFG_FORMAT_SHIFT 18
-#define V3D_TFU_ICFG_FORMAT_RASTER 0
-#define V3D_TFU_ICFG_FORMAT_SAND_128 1
-#define V3D_TFU_ICFG_FORMAT_SAND_256 2
-#define V3D_TFU_ICFG_FORMAT_LINEARTILE 11
-#define V3D_TFU_ICFG_FORMAT_UBLINEAR_1_COLUMN 12
-#define V3D_TFU_ICFG_FORMAT_UBLINEAR_2_COLUMN 13
-#define V3D_TFU_ICFG_FORMAT_UIF_NO_XOR 14
-#define V3D_TFU_ICFG_FORMAT_UIF_XOR 15
-
 static bool
 v3d_tfu(struct pipe_context *pctx,
         struct pipe_resource *pdst,
@@ -289,25 +266,25 @@ v3d_tfu(struct pipe_context *pctx,
                                v3d_layer_offset(psrc, src_level, src_layer));
         tfu.iia |= src_offset;
         if (src_base_slice->tiling == V3D_TILING_RASTER) {
-                tfu.icfg |= (V3D_TFU_ICFG_FORMAT_RASTER <<
-                             V3D_TFU_ICFG_FORMAT_SHIFT);
+                tfu.icfg |= (V3D33_TFU_ICFG_FORMAT_RASTER <<
+                             V3D33_TFU_ICFG_FORMAT_SHIFT);
         } else {
-                tfu.icfg |= ((V3D_TFU_ICFG_FORMAT_LINEARTILE +
+                tfu.icfg |= ((V3D33_TFU_ICFG_FORMAT_LINEARTILE +
                               (src_base_slice->tiling - V3D_TILING_LINEARTILE)) <<
-                             V3D_TFU_ICFG_FORMAT_SHIFT);
+                             V3D33_TFU_ICFG_FORMAT_SHIFT);
         }
 
         uint32_t dst_offset = (dst->bo->offset +
                                v3d_layer_offset(pdst, base_level, dst_layer));
         tfu.ioa |= dst_offset;
         if (last_level != base_level)
-                tfu.ioa |= V3D_TFU_IOA_DIMTW;
-        tfu.ioa |= ((V3D_TFU_IOA_FORMAT_LINEARTILE +
+                tfu.ioa |= V3D33_TFU_IOA_DIMTW;
+        tfu.ioa |= ((V3D33_TFU_IOA_FORMAT_LINEARTILE +
                      (dst_base_slice->tiling - V3D_TILING_LINEARTILE)) <<
-                    V3D_TFU_IOA_FORMAT_SHIFT);
+                    V3D33_TFU_IOA_FORMAT_SHIFT);
 
-        tfu.icfg |= tex_format << V3D_TFU_ICFG_TTYPE_SHIFT;
-        tfu.icfg |= (last_level - base_level) << V3D_TFU_ICFG_NUMMM_SHIFT;
+        tfu.icfg |= tex_format << V3D33_TFU_ICFG_TTYPE_SHIFT;
+        tfu.icfg |= (last_level - base_level) << V3D33_TFU_ICFG_NUMMM_SHIFT;
 
         switch (src_base_slice->tiling) {
         case V3D_TILING_UIF_NO_XOR:
@@ -336,7 +313,7 @@ v3d_tfu(struct pipe_context *pctx,
 
                 tfu.icfg |= (((dst_base_slice->padded_height -
                                implicit_padded_height) / uif_block_h) <<
-                             V3D_TFU_ICFG_OPAD_SHIFT);
+                             V3D33_TFU_ICFG_OPAD_SHIFT);
         }
 
         int ret = v3d_ioctl(screen->fd, DRM_IOCTL_V3D_SUBMIT_TFU, &tfu);



More information about the mesa-commit mailing list