Mesa (master): vc4: Fix fast clear color packing for 565.
Eric Anholt
anholt at kemper.freedesktop.org
Sun Oct 16 18:29:53 UTC 2016
Module: Mesa
Branch: master
Commit: c61eb3c91cfcce48f5d0f0507123bdf107cb976b
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c61eb3c91cfcce48f5d0f0507123bdf107cb976b
Author: Eric Anholt <eric at anholt.net>
Date: Fri Oct 14 16:26:25 2016 -0700
vc4: Fix fast clear color packing for 565.
Piglit didn't manage to cover this because fbo-clear-formats uses
scissors, so we don't get fast clearing.
---
src/gallium/drivers/vc4/vc4_draw.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/src/gallium/drivers/vc4/vc4_draw.c b/src/gallium/drivers/vc4/vc4_draw.c
index f44831f..61c5842 100644
--- a/src/gallium/drivers/vc4/vc4_draw.c
+++ b/src/gallium/drivers/vc4/vc4_draw.c
@@ -496,10 +496,23 @@ vc4_clear(struct pipe_context *pctx, unsigned buffers,
if (buffers & PIPE_CLEAR_COLOR0) {
struct vc4_resource *rsc =
vc4_resource(vc4->framebuffer.cbufs[0]->texture);
+ uint32_t clear_color;
- job->clear_color[0] = job->clear_color[1] =
- pack_rgba(vc4->framebuffer.cbufs[0]->format,
- color->f);
+ if (vc4_rt_format_is_565(vc4->framebuffer.cbufs[0]->format)) {
+ /* In 565 mode, the hardware will be packing our color
+ * for us.
+ */
+ clear_color = pack_rgba(PIPE_FORMAT_R8G8B8A8_UNORM,
+ color->f);
+ } else {
+ /* Otherwise, we need to do this packing because we
+ * support multiple swizzlings of RGBA8888.
+ */
+ clear_color =
+ pack_rgba(vc4->framebuffer.cbufs[0]->format,
+ color->f);
+ }
+ job->clear_color[0] = job->clear_color[1] = clear_color;
rsc->initialized_buffers |= (buffers & PIPE_CLEAR_COLOR0);
}
More information about the mesa-commit
mailing list