From e05b3079429a9e5446194d2a9f3fcea2004a5c8c Mon Sep 17 00:00:00 2001 From: Chad Versace Date: Tue, 5 Jan 2016 14:30:23 -0800 Subject: [PATCH] isl: Add isl_surf_get_array_pitch_el() Will be needed to program SurfaceQPitch for Skylake 1D arrays. --- src/isl/isl.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/isl/isl.h b/src/isl/isl.h index 15cfd0f4c56..9e07b2ff63c 100644 --- a/src/isl/isl.h +++ b/src/isl/isl.h @@ -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. */ -- 2.30.2