summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2017-06-24 22:50:53 -0700
committerJason Ekstrand <[email protected]>2017-07-22 20:59:22 -0700
commit36aed7c74cad99b76a50fade64e3d4a1e3d13807 (patch)
tree539582519802e8c38ecc6c1541ab9aa9914d6815
parent67027ddf3f3c946faeada9a4220900e064a72024 (diff)
i965/blorp: Use the renderbuffer format for clears
This fixes the Piglit ARB_texture_views rendering-formats test. Reviewed-by: Topi Pohjolainen <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_blorp.c10
1 files changed, 9 insertions, 1 deletions
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;