Mesa (master): etnaviv: enable full overwrite when no color buffer is present

Lucas Stach lynxeye at kemper.freedesktop.org
Sat Nov 18 13:36:48 UTC 2017


Module: Mesa
Branch: master
Commit: f5d477f447bb23433f8c9e1376ef61c3f6d905ea
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f5d477f447bb23433f8c9e1376ef61c3f6d905ea

Author: Lucas Stach <l.stach at pengutronix.de>
Date:   Wed Nov 15 17:33:17 2017 +0100

etnaviv: enable full overwrite when no color buffer is present

The OVERWRITE bit disables destination fetches, which is exactly what
we want when there is no valid color buffer bound.

Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
Reviewed-by: Wladimir J. van der Laan <laanwj at gmail.com>

---

 src/gallium/drivers/etnaviv/etnaviv_blend.c | 4 ++--
 src/gallium/drivers/etnaviv/etnaviv_state.c | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/etnaviv/etnaviv_blend.c b/src/gallium/drivers/etnaviv/etnaviv_blend.c
index 1b432bd687..9c23411d4f 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_blend.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_blend.c
@@ -131,8 +131,8 @@ etna_update_blend(struct etna_context *ctx)
     * - The color mask is 1111
     * - No blending is used
     */
-   bool full_overwrite = (rt0->colormask == 0xf) &&
-                         blend->fo_allowed;
+   bool full_overwrite = ((rt0->colormask == 0xf) && blend->fo_allowed) ||
+                         !pfb->cbufs[0];
    blend->PE_COLOR_FORMAT =
             VIVS_PE_COLOR_FORMAT_COMPONENTS(colormask) |
             COND(full_overwrite, VIVS_PE_COLOR_FORMAT_OVERWRITE);
diff --git a/src/gallium/drivers/etnaviv/etnaviv_state.c b/src/gallium/drivers/etnaviv/etnaviv_state.c
index 59a7281646..004e3cd132 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_state.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_state.c
@@ -185,7 +185,7 @@ etna_set_framebuffer_state(struct pipe_context *pctx,
       /* Clearing VIVS_PE_COLOR_FORMAT_COMPONENTS__MASK and
        * VIVS_PE_COLOR_FORMAT_OVERWRITE prevents us from overwriting the
        * color target */
-      cs->PE_COLOR_FORMAT = 0;
+      cs->PE_COLOR_FORMAT = VIVS_PE_COLOR_FORMAT_OVERWRITE;
       cs->PE_COLOR_STRIDE = 0;
       cs->TS_COLOR_STATUS_BASE.bo = NULL;
       cs->TS_COLOR_SURFACE_BASE.bo = NULL;




More information about the mesa-commit mailing list