From 36aed7c74cad99b76a50fade64e3d4a1e3d13807 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Sat, 24 Jun 2017 22:50:53 -0700 Subject: [PATCH] i965/blorp: Use the renderbuffer format for clears This fixes the Piglit ARB_texture_views rendering-formats test. Reviewed-by: Topi Pohjolainen --- src/mesa/drivers/dri/i965/brw_blorp.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c b/src/mesa/drivers/dri/i965/brw_blorp.c index e50173d4427..3c8a2a17287 100644 --- a/src/mesa/drivers/dri/i965/brw_blorp.c +++ b/src/mesa/drivers/dri/i965/brw_blorp.c @@ -715,9 +715,9 @@ do_single_blorp_clear(struct brw_context *brw, struct gl_framebuffer *fb, { struct gl_context *ctx = &brw->ctx; struct intel_renderbuffer *irb = intel_renderbuffer(rb); - mesa_format format = irb->mt->format; uint32_t x0, x1, y0, y1; + mesa_format format = irb->Base.Base.Format; if (!encode_srgb && _mesa_get_format_color_encoding(format) == GL_SRGB) format = _mesa_get_srgb_format_linear(format); @@ -741,6 +741,14 @@ do_single_blorp_clear(struct brw_context *brw, struct gl_framebuffer *fb, if (set_write_disables(irb, ctx->Color.ColorMask[buf], color_write_disable)) can_fast_clear = false; + /* We store clear colors as floats or uints as needed. If there are + * texture views in play, the formats will not properly be respected + * during resolves because the resolve operations only know about the + * miptree and not the renderbuffer. + */ + if (irb->Base.Base.Format != irb->mt->format) + can_fast_clear = false; + if (!irb->mt->supports_fast_clear || !brw_is_color_fast_clear_compatible(brw, irb->mt, &ctx->Color.ClearColor)) can_fast_clear = false; -- 2.30.2