diff options
author | Nanley Chery <[email protected]> | 2016-02-26 14:49:51 -0800 |
---|---|---|
committer | Nanley Chery <[email protected]> | 2016-03-03 10:56:15 -0800 |
commit | 456f5b0314747c5e47435a6d9d708ef7895c7a49 (patch) | |
tree | 180f80f7e6e2e005151b7aa7493d7d6d398b680b /src/intel/isl | |
parent | 206414f92edb4a2149b504f9c296f687a9572ffe (diff) |
isl: Add function to get intratile offsets from x/y offsets
Signed-off-by: Nanley Chery <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/intel/isl')
-rw-r--r-- | src/intel/isl/isl.c | 43 | ||||
-rw-r--r-- | 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 @@ -1162,6 +1162,18 @@ isl_surf_get_image_intratile_offset_el(const struct isl_device *dev, 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 * * @pre surf->usage has ISL_SURF_USAGE_DEPTH_BIT |