intel: add pixel offset calculator for miptree levels
authorAbdiel Janulgue <abdiel.janulgue@linux.intel.com>
Fri, 7 Dec 2012 11:40:35 +0000 (13:40 +0200)
committerChad Versace <chad.versace@linux.intel.com>
Fri, 1 Feb 2013 19:58:12 +0000 (11:58 -0800)
Add helper to calculate fine-grained x and y adjustment pixels
to an image within a miptree level for tiled regions.

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
Signed-off-by: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
src/mesa/drivers/dri/intel/intel_mipmap_tree.c
src/mesa/drivers/dri/intel/intel_mipmap_tree.h

index 05f5a4d657a591066f4c2478f0819f6c5507df40..31abdad72072f2a941c628fdf4109de8a05a01bf 100644 (file)
@@ -687,6 +687,21 @@ intel_miptree_get_image_offset(struct intel_mipmap_tree *mt,
    *y = mt->level[level].slice[slice].y_offset;
 }
 
+void
+intel_miptree_get_tile_offsets(struct intel_mipmap_tree *mt,
+                               GLuint level, GLuint slice,
+                               uint32_t *tile_x,
+                               uint32_t *tile_y)
+{
+   struct intel_region *region = mt->region;
+   uint32_t mask_x, mask_y;
+
+   intel_region_get_tile_masks(region, &mask_x, &mask_y, false);
+
+   *tile_x = mt->level[level].slice[slice].x_offset & mask_x;
+   *tile_y = mt->level[level].slice[slice].y_offset & mask_y;
+}
+
 static void
 intel_miptree_copy_slice(struct intel_context *intel,
                         struct intel_mipmap_tree *dst_mt,
index a8f27d96a588ca1a283fb5da861e60c4f47f2203..27540bc182fde5f2366f08bd9ddbf07b8219a607 100644 (file)
@@ -467,6 +467,12 @@ void
 intel_miptree_get_dimensions_for_image(struct gl_texture_image *image,
                                        int *width, int *height, int *depth);
 
+void
+intel_miptree_get_tile_offsets(struct intel_mipmap_tree *mt,
+                               GLuint level, GLuint slice,
+                               uint32_t *tile_x,
+                               uint32_t *tile_y);
+
 void intel_miptree_set_level_info(struct intel_mipmap_tree *mt,
                                   GLuint level,
                                   GLuint x, GLuint y,