iris: Fix fast-clearing of depth via glClearTex(Sub)Image
authorDanylo Piliaiev <danylo.piliaiev@globallogic.com>
Thu, 2 Jul 2020 08:39:25 +0000 (11:39 +0300)
committerMarge Bot <eric+marge@anholt.net>
Tue, 7 Jul 2020 11:05:03 +0000 (11:05 +0000)
If we clear depth only texture via glClearTex(Sub)Image it may cause:
../src/intel/blorp/blorp_genX_exec.h:1554: blorp_emit_surface_states: Assertion `params->depth.enabled || params->stencil.enabled' failed.

due to clear_depth_stencil calling blorp_clear_depth_stencil when
depth is already fast-cleared and there is no stencil.

Fixes piglit test: arb_clear_texture-depth

Fixes: 51638cf18a532510f9e1fd8f36207b56d38137b8
Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5770>

src/gallium/drivers/iris/iris_clear.c

index 50936412b2dad56fc0190b83cf0653a754adffcd..2a78155f4e7afa0743923fa89ec19817dc8296c5 100644 (file)
@@ -583,7 +583,7 @@ clear_depth_stencil(struct iris_context *ice,
    /* At this point, we might have fast cleared the depth buffer. So if there's
     * no stencil clear pending, return early.
     */
-   if (!(clear_depth || clear_stencil)) {
+   if (!(clear_depth || (clear_stencil && stencil_res))) {
       return;
    }