diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c index ab877baa68e..34f7833663e 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c @@ -926,6 +926,12 @@ etna_get_specs(struct etna_screen *screen) screen->specs.use_blt = VIV_FEATURE(screen, chipMinorFeatures5, BLT_ENGINE); + /* Only allow fast clear with MC2.0, as the TS unit bypasses the memory + * offset on MC1.0 and we have no way to fixup the address. + */ + if (!VIV_FEATURE(screen, chipMinorFeatures0, MC20)) + screen->features[viv_chipFeatures] &= ~chipFeatures_FAST_CLEAR; + return true; fail: diff --git a/src/gallium/drivers/etnaviv/etnaviv_surface.c b/src/gallium/drivers/etnaviv/etnaviv_surface.c index 85a7d470314..3518725aafb 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_surface.c +++ b/src/gallium/drivers/etnaviv/etnaviv_surface.c @@ -105,7 +105,6 @@ etna_create_surface(struct pipe_context *pctx, struct pipe_resource *prsc, * offset and MMU. */ if (VIV_FEATURE(screen, chipFeatures, FAST_CLEAR) && - VIV_FEATURE(screen, chipMinorFeatures0, MC20) && !rsc->ts_bo && /* needs to be RS/BLT compatible for transfer_map/unmap */ (rsc->levels[level].padded_width & ETNA_RS_WIDTH_MASK) == 0 &&