[Mesa-dev] [PATCH v2] i965: check if HiZ buffer is available
Chad Versace
chadversary at chromium.org
Thu Jan 19 21:23:53 UTC 2017
On Wed 18 Jan 2017, Juan A. Suarez Romero wrote:
> Commit 42011be1e disabled HiZ when sharing depth buffer externally,
> which free HiZ buffer.
>
> But in emit_depth_packets() we use that buffer, which generates a crash
> in
> "piglit.spec.egl_khr_gl_image.egl_khr_gl_renderbuffer_image-clear-shared-image
> gl_depth_component24" test when running in Skylake.
>
> This commit avoids using HiZ when the buffer was free.
>
> v2: detect earlier we don't have HiZ buffer (Jason)
> ---
> src/mesa/drivers/dri/i965/intel_fbo.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/mesa/drivers/dri/i965/intel_fbo.c b/src/mesa/drivers/dri/i965/intel_fbo.c
> index de0cd6aca2..aceeba3224 100644
> --- a/src/mesa/drivers/dri/i965/intel_fbo.c
> +++ b/src/mesa/drivers/dri/i965/intel_fbo.c
> @@ -976,7 +976,7 @@ bool
> intel_renderbuffer_resolve_hiz(struct brw_context *brw,
> struct intel_renderbuffer *irb)
> {
> - if (irb->mt)
> + if (irb->mt && irb->mt->hiz_buf != NULL)
> return intel_miptree_slice_resolve_hiz(brw,
> irb->mt,
> irb->mt_level,
Even this misses all the cases. brw_fast_clear_depth() will still try to
emit a hiz clear, which leads to a crash.
The fix needs to go earlier, directly in intel_miptree_make_shareable()
itself. I had a fix sitting locally in my tree from last week. I'll send
it now.
More information about the mesa-dev
mailing list