summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanley Chery <nanley.g.chery@intel.com>2016-02-26 14:49:51 -0800
committerNanley Chery <nanley.g.chery@intel.com>2016-03-03 10:56:15 -0800
commit456f5b0314747c5e47435a6d9d708ef7895c7a49 (patch)
tree180f80f7e6e2e005151b7aa7493d7d6d398b680b
parent206414f92edb4a2149b504f9c296f687a9572ffe (diff)
isl: Add function to get intratile offsets from x/y offsets
Signed-off-by: Nanley Chery <nanley.g.chery@intel.com> Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
-rw-r--r--src/intel/isl/isl.c43
-rw-r--r--src/intel/isl/isl.h12
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