Only walk through the set of enabled TextureUnits looking for a texture that needs to be resolved if the context state flags a new texture.
Note that this will miss if the client is rendering into a texture that it is reading from, though that needs explicit barriers (and futhermore no piglits complain). Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> Cc: Jordan Justen <jordan.l.jus...@intel.com> Cc: Jason Ekstrand <jason.ekstr...@intel.com> Cc: Kenneth Graunke <kenn...@whitecape.org> Cc: Francisco Jerez <curroje...@riseup.net> --- src/mesa/drivers/dri/i965/brw_draw.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index 1269b65..0ffcc24 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -355,16 +355,18 @@ brw_draw_resolve(struct gl_context *ctx) intel_renderbuffer_resolve_hiz(brw, depth_irb); /* Resolve depth buffer and render cache of each enabled texture. */ - int maxEnabledUnit = brw->ctx.Texture._MaxEnabledTexImageUnit; - for (int i = 0; i <= maxEnabledUnit; i++) { - if (!brw->ctx.Texture.Unit[i]._Current) - continue; - tex_obj = intel_texture_object(brw->ctx.Texture.Unit[i]._Current); - if (!tex_obj || !tex_obj->mt) - continue; - intel_miptree_all_slices_resolve_depth(brw, tex_obj->mt); - intel_miptree_resolve_color(brw, tex_obj->mt); - brw_render_cache_set_check_flush(brw, tex_obj->mt->bo); + if (brw->NewGLState & _NEW_TEXTURE) { + int maxEnabledUnit = brw->ctx.Texture._MaxEnabledTexImageUnit; + for (int i = 0; i <= maxEnabledUnit; i++) { + if (!brw->ctx.Texture.Unit[i]._Current) + continue; + tex_obj = intel_texture_object(brw->ctx.Texture.Unit[i]._Current); + if (!tex_obj || !tex_obj->mt) + continue; + intel_miptree_all_slices_resolve_depth(brw, tex_obj->mt); + intel_miptree_resolve_color(brw, tex_obj->mt); + brw_render_cache_set_check_flush(brw, tex_obj->mt->bo); + } } /* As we may have resolved using meta operations and so left the -- 2.5.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev