From 456f5b0314747c5e47435a6d9d708ef7895c7a49 Mon Sep 17 00:00:00 2001 From: Nanley Chery Date: Fri, 26 Feb 2016 14:49:51 -0800 Subject: [PATCH] isl: Add function to get intratile offsets from x/y offsets Signed-off-by: Nanley Chery Reviewed-by: Jason Ekstrand --- src/intel/isl/isl.c | 43 +++++++++++++++++++++++++++++++------------ src/intel/isl/isl.h | 12 ++++++++++++ 2 files changed, 43 insertions(+), 12 deletions(-) diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c index f7b4c701841..7fd9eeac515 100644 --- a/src/intel/isl/isl.c +++ b/src/intel/isl/isl.c @@ -1414,11 +1414,10 @@ isl_surf_get_image_offset_el(const struct isl_surf *surf, } void -isl_surf_get_image_intratile_offset_el(const struct isl_device *dev, +isl_surf_get_image_intratile_offset_el_xy(const struct isl_device *dev, const struct isl_surf *surf, - uint32_t level, - uint32_t logical_array_layer, - uint32_t logical_z_offset, + uint32_t total_x_offset_el, + uint32_t total_y_offset_el, uint32_t *base_address_offset, uint32_t *x_offset_el, uint32_t *y_offset_el) @@ -1428,14 +1427,6 @@ isl_surf_get_image_intratile_offset_el(const struct isl_device *dev, struct isl_tile_info tile_info; isl_surf_get_tile_info(dev, surf, &tile_info); - uint32_t total_x_offset_el; - uint32_t total_y_offset_el; - isl_surf_get_image_offset_el(surf, level, - logical_array_layer, - logical_z_offset, - &total_x_offset_el, - &total_y_offset_el); - uint32_t small_y_offset_el = total_y_offset_el % tile_info.height; uint32_t big_y_offset_el = total_y_offset_el - small_y_offset_el; uint32_t big_y_offset_B = big_y_offset_el * surf->row_pitch; @@ -1448,6 +1439,34 @@ isl_surf_get_image_intratile_offset_el(const struct isl_device *dev, *base_address_offset = big_y_offset_B + big_x_offset_B; *x_offset_el = small_x_offset_el; *y_offset_el = small_y_offset_el; + + +} + +void +isl_surf_get_image_intratile_offset_el(const struct isl_device *dev, + const struct isl_surf *surf, + uint32_t level, + uint32_t logical_array_layer, + uint32_t logical_z_offset, + uint32_t *base_address_offset, + uint32_t *x_offset_el, + uint32_t *y_offset_el) +{ + uint32_t total_x_offset_el; + uint32_t total_y_offset_el; + isl_surf_get_image_offset_el(surf, level, + logical_array_layer, + logical_z_offset, + &total_x_offset_el, + &total_y_offset_el); + + isl_surf_get_image_intratile_offset_el_xy(dev, surf, + total_x_offset_el, + total_y_offset_el, + base_address_offset, + x_offset_el, + y_offset_el); } uint32_t diff --git a/src/intel/isl/isl.h b/src/intel/isl/isl.h index 7456975014b..5a48bce6c64 100644 --- a/src/intel/isl/isl.h +++ b/src/intel/isl/isl.h @@ -1161,6 +1161,18 @@ isl_surf_get_image_intratile_offset_el(const struct isl_device *dev, uint32_t *x_offset_el, uint32_t *y_offset_el); +/** + * See above. + */ +void +isl_surf_get_image_intratile_offset_el_xy(const struct isl_device *dev, + const struct isl_surf *surf, + uint32_t total_x_offset_el, + uint32_t total_y_offset_el, + uint32_t *base_address_offset, + uint32_t *x_offset_el, + uint32_t *y_offset_el); + /** * @brief Get value of 3DSTATE_DEPTH_BUFFER.SurfaceFormat * -- 2.30.2