i965/miptree: Init r8stencil_needs_update to false
authorNanley Chery <nanley.g.chery@intel.com>
Sat, 9 Jun 2018 00:50:39 +0000 (17:50 -0700)
committerNanley Chery <nanley.g.chery@intel.com>
Fri, 13 Jul 2018 15:36:19 +0000 (08:36 -0700)
The current behavior masked two bugs where the flag was not set to true
after modifying the stencil texture. One case was a regression
introduced with commit bdbb527a65fc729e7a9319ae67de60d03d06c3fd and
another was a bug in the depthstencil mapping code. These have since
been fixed.

To prevent such bugs from being masked in the future, initialize
r8stencil_needs_update to false.

v2: Keep the delayed allocation.

Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
src/mesa/drivers/dri/i965/intel_mipmap_tree.c

index 820c1d859344e2c0e46e01ca2f2154b2d6b36767..b537e2bf4fd38e13e44102151d4f4136b62f4ad9 100644 (file)
@@ -668,8 +668,6 @@ make_separate_stencil_surface(struct brw_context *brw,
    if (!mt->stencil_mt)
       return false;
 
-   mt->stencil_mt->r8stencil_needs_update = true;
-
    return true;
 }
 
@@ -2933,7 +2931,7 @@ intel_update_r8stencil(struct brw_context *brw,
    assert(devinfo->gen >= 7);
    struct intel_mipmap_tree *src =
       mt->format == MESA_FORMAT_S_UINT8 ? mt : mt->stencil_mt;
-   if (!src || devinfo->gen >= 8 || !src->r8stencil_needs_update)
+   if (!src || devinfo->gen >= 8)
       return;
 
    assert(src->surf.size > 0);
@@ -2957,6 +2955,9 @@ intel_update_r8stencil(struct brw_context *brw,
       assert(mt->r8stencil_mt);
    }
 
+   if (src->r8stencil_needs_update == false)
+      return;
+
    struct intel_mipmap_tree *dst = mt->r8stencil_mt;
 
    for (int level = src->first_level; level <= src->last_level; level++) {