isl: Add isl_surf_get_array_pitch_el()
authorChad Versace <chad.versace@intel.com>
Tue, 5 Jan 2016 22:30:23 +0000 (14:30 -0800)
committerChad Versace <chad.versace@intel.com>
Wed, 6 Jan 2016 17:38:57 +0000 (09:38 -0800)
Will be needed to program SurfaceQPitch for Skylake 1D arrays.

src/isl/isl.h

index 15cfd0f4c56899722bca75c1d247e522a4a08d5c..9e07b2ff63cbf395585acad2988f0135daca1de0 100644 (file)
@@ -967,6 +967,27 @@ isl_surf_get_image_alignment_sa(const struct isl_surf *surf)
    };
 }
 
+/**
+ * Pitch between vertically adjacent surface elements, in bytes.
+ */
+static inline uint32_t
+isl_surf_get_row_pitch(const struct isl_surf *surf)
+{
+   return surf->row_pitch;
+}
+
+/**
+ * Pitch between vertically adjacent surface elements, in units of surface elements.
+ */
+static inline uint32_t
+isl_surf_get_row_pitch_el(const struct isl_surf *surf)
+{
+   const struct isl_format_layout *fmtl = isl_format_get_layout(surf->format);
+
+   assert(surf->row_pitch % fmtl->bs == 0);
+   return surf->row_pitch / fmtl->bs;
+}
+
 /**
  * Pitch between physical array slices, in rows of surface elements.
  */
@@ -976,6 +997,16 @@ isl_surf_get_array_pitch_el_rows(const struct isl_surf *surf)
    return surf->array_pitch_el_rows;
 }
 
+/**
+ * Pitch between physical array slices, in units of surface elements.
+ */
+static inline uint32_t
+isl_surf_get_array_pitch_el(const struct isl_surf *surf)
+{
+   return isl_surf_get_array_pitch_el_rows(surf) *
+          isl_surf_get_row_pitch_el(surf);
+}
+
 /**
  * Pitch between physical array slices, in rows of surface samples.
  */