---
 src/intel/isl/isl.h               | 3 +++
 src/intel/isl/isl_surface_state.c | 9 +++++++++
 2 files changed, 12 insertions(+)

diff --git a/src/intel/isl/isl.h b/src/intel/isl/isl.h
index a987482..4dd4a2f 100644
--- a/src/intel/isl/isl.h
+++ b/src/intel/isl/isl.h
@@ -844,6 +844,9 @@ struct isl_surf_fill_state_info {
     * Valid values depend on hardware generation.
     */
    union isl_color_value clear_color;
+
+   /* Intra-tile offset */
+   uint16_t x_offset, y_offset;
 };
 
 struct isl_buffer_fill_state_info {
diff --git a/src/intel/isl/isl_surface_state.c 
b/src/intel/isl/isl_surface_state.c
index 9bfc55f..65e4b8e 100644
--- a/src/intel/isl/isl_surface_state.c
+++ b/src/intel/isl/isl_surface_state.c
@@ -401,6 +401,15 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, 
void *state,
    s.MOCS = info->mocs;
 #endif
 
+#if GEN_GEN > 4 || GEN_IS_G4X
+   const unsigned x_div = 4;
+   const unsigned y_div = GEN_GEN >= 8 ? 4 : 2;
+   assert(info->x_offset % x_div == 0);
+   assert(info->y_offset % y_div == 0);
+   s.XOffset = info->x_offset / x_div;
+   s.YOffset = info->y_offset / y_div;
+#endif
+
 #if GEN_GEN >= 7
    if (info->aux_surf) {
       struct isl_tile_info tile_info;
-- 
2.5.0.400.gff86faf

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to