[Mesa-dev] [PATCH] i965/gen5, 6: Fix hang when emitting hiz buffer without stencil buffer

Kenneth Graunke kenneth at whitecape.org
Wed Jun 15 00:13:51 PDT 2011


On 06/14/2011 03:28 PM, Chad Versace wrote:
[snip]
> @@ -355,26 +355,48 @@ static void emit_depthbuffer(struct brw_context *brw)
>         ADVANCE_BATCH();
>      }
>
> -   /* Emit hiz buffer. */
>      if (hiz_region || stencil_irb) {
> -      BEGIN_BATCH(3);
> -      OUT_BATCH((_3DSTATE_HIER_DEPTH_BUFFER<<  16) | (3 - 2));
> -      OUT_BATCH(hiz_region->pitch * hiz_region->cpp - 1);
> -      OUT_RELOC(hiz_region->buffer,
> -		I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER,
> -		0);
> -      ADVANCE_BATCH();
> -   }
> +      /*
> +       * In the 3DSTATE_DEPTH_BUFFER batch emitted above, the 'separate
> +       * stencil enable' and 'hiz enable' bits were set. Therefore we must
> +       * emit 3DSTATE_HIER_DEPTH_BUFFER and 3DSTATE_STENCIL_BUFFER. Even if
> +       * there is no stencil buffer, 3DSTATE_STENCIL_BUFFER must be emitted;
> +       * failure to do so causes hangs on gen5.
> +       */

Extra indentation here?

Otherwise, yes, please :)

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

[snip]


More information about the mesa-dev mailing list