Paul Berry <stereotype...@gmail.com> writes: > Fast depth clears have the same depth/stencil alignment requirements > as other drawing operations. Therefore, we need to call > brw_workaround_depthstencil_alignment() from both the clear and > drawing paths. > > Without this fix, we get image corruption if the following conditions > hold: (a) the first ever drawing operation to a depth miplevel (or the > first drawing operation after having used the texture for sampling) is > a clear, (b) the depth miplevel has a size that is eligible for fast > depth clears, and (c) the depth miplevel has an offset within the > miptree that isn't 8x8 aligned. > > Fixes piglit "depthstencil-render-miplevels" tests with size 273. > > NOTE: This is a candidate for stable branches > --- > src/mesa/drivers/dri/i965/brw_clear.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_clear.c > b/src/mesa/drivers/dri/i965/brw_clear.c > index 53d8e54..cde1a06 100644 > --- a/src/mesa/drivers/dri/i965/brw_clear.c > +++ b/src/mesa/drivers/dri/i965/brw_clear.c > @@ -40,6 +40,8 @@ > #include "intel_mipmap_tree.h" > #include "intel_regions.h" > > +#include "brw_context.h" > + > #define FILE_DEBUG_FLAG DEBUG_BLIT > > static const char *buffer_names[] = { > @@ -219,7 +221,8 @@ brw_fast_clear_depth(struct gl_context *ctx) > static void > brw_clear(struct gl_context *ctx, GLbitfield mask) > { > - struct intel_context *intel = intel_context(ctx); > + struct brw_context *brw = brw_context(ctx); > + struct intel_context *intel = &brw->intel; > > if (!_mesa_check_conditional_render(ctx)) > return; > @@ -229,6 +232,7 @@ brw_clear(struct gl_context *ctx, GLbitfield mask) > } > > intel_prepare_render(intel); > + brw_workaround_depthstencil_alignment(brw);
It seems like this should be happening in brw_fast_clear(), either before before calling blorp or inside of it, instead of in the potential caller of brw_fast_clear(). Makes sense, though. > if (mask & BUFFER_BIT_DEPTH) { > if (brw_fast_clear_depth(ctx)) {
pgpfyeYl0bFrB.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev