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 15cfd0f..9e07b2f 100644 (file)
@@ -968,6 +968,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.
  */
 static inline uint32_t
@@ -977,6 +998,16 @@ isl_surf_get_array_pitch_el_rows(const struct isl_surf *surf)
 }
 
 /**
+ * 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.
  */
 static inline uint32_t