Mesa (master): i965: Only resolve texture levels/layers that are accessed.
Kenneth Graunke
kwg at kemper.freedesktop.org
Thu Oct 19 18:10:04 UTC 2017
Module: Mesa
Branch: master
Commit: e208d7f8744819a0dfb8f717a7e175f41225ba83
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e208d7f8744819a0dfb8f717a7e175f41225ba83
Author: Kenneth Graunke <kenneth at whitecape.org>
Date: Mon Oct 16 12:28:17 2017 -0700
i965: Only resolve texture levels/layers that are accessed.
This should avoid unnecessary resolves when working with texture views.
Reviewed-by: Topi Pohjolainen <topi.pohjolainen at intel.com>
Reviewed-by; Jason Ekstrand <jason at jlekstrand.net>
---
src/mesa/drivers/dri/i965/brw_draw.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c
index f9a8264f27..53d973f376 100644
--- a/src/mesa/drivers/dri/i965/brw_draw.c
+++ b/src/mesa/drivers/dri/i965/brw_draw.c
@@ -399,12 +399,26 @@ brw_predraw_resolve_inputs(struct brw_context *brw)
enum isl_format view_format =
translate_tex_format(brw, tex_obj->_Format, sampler->sRGBDecode);
+ unsigned min_level, min_layer, num_levels, num_layers;
+ if (tex_obj->base.Immutable) {
+ min_level = tex_obj->base.MinLevel;
+ num_levels = MIN2(tex_obj->base.NumLevels, tex_obj->_MaxLevel + 1);
+ min_layer = tex_obj->base.MinLayer;
+ num_layers = tex_obj->base.Target != GL_TEXTURE_3D ?
+ tex_obj->base.NumLayers : INTEL_REMAINING_LAYERS;
+ } else {
+ min_level = tex_obj->base.BaseLevel;
+ num_levels = tex_obj->_MaxLevel - tex_obj->base.BaseLevel + 1;
+ min_layer = 0;
+ num_layers = INTEL_REMAINING_LAYERS;
+ }
+
const bool disable_aux =
intel_disable_rb_aux_buffer(brw, tex_obj->mt, "for sampling");
intel_miptree_prepare_texture(brw, tex_obj->mt, view_format,
- 0, INTEL_REMAINING_LEVELS,
- 0, INTEL_REMAINING_LAYERS,
+ min_level, num_levels,
+ min_layer, num_layers,
disable_aux);
brw_render_cache_set_check_flush(brw, tex_obj->mt->bo);
More information about the mesa-commit
mailing list