Mesa (main): intel/isl: Better document isl_tiling_get_intratile_offset_*

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Aug 17 14:54:00 UTC 2021


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

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Wed Jul  7 11:06:59 2021 -0500

intel/isl: Better document isl_tiling_get_intratile_offset_*

The docs weren't updated when we switched it to 4D.  Also, the new docs
are way better.  While we're here, use the parameter name offset_B to be
more consistent.

Acked-by: Ivan Briano <ivan.briano at intel.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11765>

---

 src/intel/isl/isl.c |  8 ++++----
 src/intel/isl/isl.h | 56 +++++++++++++++++++++++++++++++++++++++++++----------
 2 files changed, 50 insertions(+), 14 deletions(-)

diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c
index 40cdfbde594..1d4afa580d9 100644
--- a/src/intel/isl/isl.c
+++ b/src/intel/isl/isl.c
@@ -2948,7 +2948,7 @@ isl_tiling_get_intratile_offset_el(enum isl_tiling tiling,
                                    uint32_t total_y_offset_el,
                                    uint32_t total_z_offset_el,
                                    uint32_t total_array_offset,
-                                   uint32_t *base_address_offset,
+                                   uint32_t *tile_offset_B,
                                    uint32_t *x_offset_el,
                                    uint32_t *y_offset_el,
                                    uint32_t *z_offset_el,
@@ -2957,8 +2957,8 @@ isl_tiling_get_intratile_offset_el(enum isl_tiling tiling,
    if (tiling == ISL_TILING_LINEAR) {
       assert(bpb % 8 == 0);
       assert(total_z_offset_el == 0 && total_array_offset == 0);
-      *base_address_offset = total_y_offset_el * row_pitch_B +
-                             total_x_offset_el * (bpb / 8);
+      *tile_offset_B = total_y_offset_el * row_pitch_B +
+                       total_x_offset_el * (bpb / 8);
       *x_offset_el = 0;
       *y_offset_el = 0;
       *z_offset_el = 0;
@@ -3005,7 +3005,7 @@ isl_tiling_get_intratile_offset_el(enum isl_tiling tiling,
    /* Add the Z and array offset to the Y offset to get a 2D offset */
    y_offset_tl += (z_offset_tl + a_offset_tl) * array_pitch_tl_rows;
 
-   *base_address_offset =
+   *tile_offset_B =
       y_offset_tl * tile_info.phys_extent_B.h * row_pitch_B +
       x_offset_tl * tile_info.phys_extent_B.h * tile_info.phys_extent_B.w;
 }
diff --git a/src/intel/isl/isl.h b/src/intel/isl/isl.h
index e1c9743791a..c497e0085f5 100644
--- a/src/intel/isl/isl.h
+++ b/src/intel/isl/isl.h
@@ -2675,14 +2675,27 @@ isl_surf_get_uncompressed_surf(const struct isl_device *dev,
                                uint32_t *y_offset_el);
 
 /**
- * @brief Calculate the intratile offsets to a surface.
+ * Calculate the intratile offsets to a surface coordinate, in elements.
  *
- * In @a base_address_offset return the offset from the base of the surface to
- * the base address of the first tile of the subimage. In @a x_offset_B and
- * @a y_offset_rows, return the offset, in units of bytes and rows, from the
- * tile's base to the subimage's first surface element. The x and y offsets
- * are intratile offsets; that is, they do not exceed the boundary of the
- * surface's tiling format.
+ * This function takes a coordinate in global tile space and returns the byte
+ * offset to the specific tile as well as the offset within that tile to the
+ * given coordinate in tile space.  The returned x/y/z/array offsets are
+ * guaranteed to lie within the tile.
+ *
+ * @param[in]  tiling               The tiling of the surface
+ * @param[in]  bpb                  The size of the surface format in bits per
+ *                                  block
+ * @param[in]  array_pitch_el_rows  The array pitch of the surface for flat 2D
+ *                                  tilings such as ISL_TILING_Y0
+ * @param[in]  total_x_offset_el    The X offset in tile space, in elements
+ * @param[in]  total_y_offset_el    The Y offset in tile space, in elements
+ * @param[in]  total_z_offset_el    The Z offset in tile space, in elements
+ * @param[in]  total_array_offset   The array offset in tile space
+ * @param[out] tile_offset_B        The returned byte offset to the tile
+ * @param[out] x_offset_el          The X offset within the tile, in elements
+ * @param[out] y_offset_el          The Y offset within the tile, in elements
+ * @param[out] z_offset_el          The Z offset within the tile, in elements
+ * @param[out] array_offset         The array offset within the tile
  */
 void
 isl_tiling_get_intratile_offset_el(enum isl_tiling tiling,
@@ -2693,12 +2706,35 @@ isl_tiling_get_intratile_offset_el(enum isl_tiling tiling,
                                    uint32_t total_y_offset_el,
                                    uint32_t total_z_offset_el,
                                    uint32_t total_array_offset,
-                                   uint32_t *base_address_offset,
+                                   uint32_t *tile_offset_B,
                                    uint32_t *x_offset_el,
                                    uint32_t *y_offset_el,
                                    uint32_t *z_offset_el,
                                    uint32_t *array_offset);
 
+/**
+ * Calculate the intratile offsets to a surface coordinate, in samples.
+ *
+ * This function takes a coordinate in global tile space and returns the byte
+ * offset to the specific tile as well as the offset within that tile to the
+ * given coordinate in tile space.  The returned x/y/z/array offsets are
+ * guaranteed to lie within the tile.
+ *
+ * @param[in]  tiling               The tiling of the surface
+ * @param[in]  bpb                  The size of the surface format in bits per
+ *                                  block
+ * @param[in]  array_pitch_el_rows  The array pitch of the surface for flat 2D
+ *                                  tilings such as ISL_TILING_Y0
+ * @param[in]  total_x_offset_sa    The X offset in tile space, in samples
+ * @param[in]  total_y_offset_sa    The Y offset in tile space, in samples
+ * @param[in]  total_z_offset_sa    The Z offset in tile space, in samples
+ * @param[in]  total_array_offset   The array offset in tile space
+ * @param[out] tile_offset_B        The returned byte offset to the tile
+ * @param[out] x_offset_sa          The X offset within the tile, in samples
+ * @param[out] y_offset_sa          The Y offset within the tile, in samples
+ * @param[out] z_offset_sa          The Z offset within the tile, in samples
+ * @param[out] array_offset         The array offset within the tile
+ */
 static inline void
 isl_tiling_get_intratile_offset_sa(enum isl_tiling tiling,
                                    enum isl_format format,
@@ -2708,7 +2744,7 @@ isl_tiling_get_intratile_offset_sa(enum isl_tiling tiling,
                                    uint32_t total_y_offset_sa,
                                    uint32_t total_z_offset_sa,
                                    uint32_t total_array_offset,
-                                   uint32_t *base_address_offset,
+                                   uint32_t *tile_offset_B,
                                    uint32_t *x_offset_sa,
                                    uint32_t *y_offset_sa,
                                    uint32_t *z_offset_sa,
@@ -2732,7 +2768,7 @@ isl_tiling_get_intratile_offset_sa(enum isl_tiling tiling,
                                       total_y_offset_el,
                                       total_z_offset_el,
                                       total_array_offset,
-                                      base_address_offset,
+                                      tile_offset_B,
                                       x_offset_sa, y_offset_sa,
                                       z_offset_sa, array_offset);
    *x_offset_sa *= fmtl->bw;



More information about the mesa-commit mailing list