i965/gen4-5: Cope with immutable-format texture revalidation
authorChris Forbes <chrisf@ijw.co.nz>
Mon, 8 Dec 2014 07:37:00 +0000 (20:37 +1300)
committerChris Forbes <chrisf@ijw.co.nz>
Sat, 14 Mar 2015 02:55:17 +0000 (15:55 +1300)
This is unfortunately sometimes necessary due to rebasing levels when
rendering into them.

16 piglits crash -> pass, when building mesa with debug enabled.

Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/intel_tex_validate.c

index 0bf0393803fc5867a6f5fadae33906c53c95f6fb..1d827683b99478fb20b22b7a883bdb40fc32c765 100644 (file)
@@ -98,10 +98,17 @@ intel_finalize_mipmap_tree(struct brw_context *brw, GLuint unit)
       return true;
    }
 
-   /* Immutable textures should not get this far -- they should have been
-    * created in a validated state, and nothing can invalidate them.
+   /* On recent generations, immutable textures should not get this far
+    * -- they should have been created in a validated state, and nothing
+    * can invalidate them.
+    *
+    * Unfortunately, this is not true on pre-Sandybridge hardware -- when
+    * rendering into an immutable-format depth texture we may have to rebase
+    * the rendered levels to meet alignment requirements.
+    *
+    * FINISHME: Avoid doing this.
     */
-   assert(!tObj->Immutable);
+   assert(!tObj->Immutable || brw->gen < 6);
 
    firstImage = intel_texture_image(tObj->Image[0][tObj->BaseLevel]);