i965: Move depth resolve for span fallbacks to a simpler place.
authorEric Anholt <eric@anholt.net>
Sun, 26 Aug 2012 21:43:52 +0000 (14:43 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 28 Aug 2012 18:43:04 +0000 (11:43 -0700)
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
Acked-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/drivers/dri/intel/intel_span.c
src/mesa/drivers/dri/intel/intel_tex_validate.c

index 3dc7f21f0bd85d1d3e4364bb9c0b7fb14f62ee95..475c01d4758ce10993f6630704801af55d6ada2d 100644 (file)
@@ -104,33 +104,6 @@ intel_offset_S8(uint32_t stride, uint32_t x, uint32_t y, bool swizzled)
    return u;
 }
 
-
-/**
- * Resolve all buffers that will be mapped by intelSpanRenderStart().
- *
- * Resolve the depth buffer of each enabled texture and of the read and draw
- * buffers.
- *
- * (Note: In the future this will also perform MSAA resolves.)
- */
-static void
-intel_span_resolve_buffers(struct intel_context *intel)
-{
-   struct gl_context *ctx = &intel->ctx;
-   struct intel_texture_object *tex_obj;
-
-   /* Resolve depth buffer of each enabled texture. */
-   for (int i = 0; i < ctx->Const.MaxTextureImageUnits; i++) {
-      if (!ctx->Texture.Unit[i]._ReallyEnabled)
-        continue;
-      tex_obj = intel_texture_object(ctx->Texture.Unit[i]._Current);
-      intel_finalize_mipmap_tree(intel, i);
-      if (!tex_obj || !tex_obj->mt)
-        continue;
-      intel_miptree_all_slices_resolve_depth(intel, tex_obj->mt);
-   }
-}
-
 /**
  * Map the regions needed by intelSpanRenderStart().
  */
@@ -165,7 +138,6 @@ intelSpanRenderStart(struct gl_context * ctx)
 
    intel_flush(ctx);
    intel_prepare_render(intel);
-   intel_span_resolve_buffers(intel);
    intel_flush(ctx);
    intel_span_map_buffers(intel);
 }
index 77c93290216902b41a3b90c9b649c7e20c7b6e48..578b4173512b5b276003c9fceace1690c12354d3 100644 (file)
@@ -134,6 +134,9 @@ intel_tex_map_image_for_swrast(struct intel_context *intel,
    face = intel_image->base.Base.Face;
    mt = intel_image->mt;
 
+   for (int i = 0; i < mt->level[level].depth; i++)
+      intel_miptree_slice_resolve_depth(intel, mt, level, i);
+
    if (mt->target == GL_TEXTURE_3D ||
        mt->target == GL_TEXTURE_2D_ARRAY ||
        mt->target == GL_TEXTURE_1D_ARRAY) {