Signed-off-by: Topi Pohjolainen <topi.pohjolai...@intel.com> --- src/mesa/drivers/dri/i965/brw_tex_layout.c | 25 +++++++++++++++++++++++++ src/mesa/drivers/dri/i965/intel_mipmap_tree.h | 3 +++ 2 files changed, 28 insertions(+)
diff --git a/src/mesa/drivers/dri/i965/brw_tex_layout.c b/src/mesa/drivers/dri/i965/brw_tex_layout.c index bfa8afa..6f65334 100644 --- a/src/mesa/drivers/dri/i965/brw_tex_layout.c +++ b/src/mesa/drivers/dri/i965/brw_tex_layout.c @@ -36,6 +36,7 @@ #include "brw_context.h" #include "main/macros.h" #include "main/glformats.h" +#include "isl/isl_priv.h" #define FILE_DEBUG_FLAG DEBUG_MIPTREE @@ -662,3 +663,27 @@ brw_miptree_layout(struct brw_context *brw, return true; } +/* Provide surface representing selected single level. */ +struct isl_surf +gen6_back_to_back_minify(const struct isl_surf *surf, unsigned levels) +{ + struct isl_surf s = *surf; + + s.logical_level0_px = isl_extent4d_minify(&surf->logical_level0_px, + surf->dim, levels); + s.phys_level0_sa = isl_extent4d_minify(&surf->phys_level0_sa, + surf->dim, levels); + s.levels = 1; + + const struct isl_extent3d image_align_sa = + isl_surf_get_image_alignment_sa(surf); + const unsigned d = s.dim == ISL_SURF_DIM_3D ? + s.phys_level0_sa.depth : s.phys_level0_sa.array_len; + const unsigned aligned_h = + isl_align_npot(s.phys_level0_sa.height, image_align_sa.h); + + const uint32_t tile_align_h = surf->tiling == ISL_TILING_W ? 64 : 32; + s.size = ALIGN(d * aligned_h, tile_align_h) * s.row_pitch; + + return s; +} diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h index 4bc30a2..d004820 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h @@ -1005,6 +1005,9 @@ bool intel_miptree_sample_with_hiz(struct brw_context *brw, struct intel_mipmap_tree *mt); +struct isl_surf +gen6_back_to_back_minify(const struct isl_surf *surf, unsigned levels); + #ifdef __cplusplus } #endif -- 2.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev