Module: Mesa Branch: master Commit: 4c02baade9d590787acae157ce9b2d09c6a9bf55 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4c02baade9d590787acae157ce9b2d09c6a9bf55
Author: Marek Olšák <[email protected]> Date: Sun Feb 26 17:07:52 2012 +0100 r600g: fix streamout cache flush for r600 Figured out by trial and error. --- src/gallium/drivers/r600/r600_hw_context.c | 16 ++++++++++++---- 1 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/r600/r600_hw_context.c b/src/gallium/drivers/r600/r600_hw_context.c index 8c2e183..d0ef25f 100644 --- a/src/gallium/drivers/r600/r600_hw_context.c +++ b/src/gallium/drivers/r600/r600_hw_context.c @@ -1915,13 +1915,21 @@ void r600_context_streamout_end(struct r600_context *ctx) r600_set_streamout_enable(ctx, 0); } - if (ctx->chip_class < R700) { + /* This is needed to fix cache flushes on r600. */ + if (ctx->chip_class == R600) { + if (ctx->family == CHIP_RV670 || + ctx->family == CHIP_RS780 || + ctx->family == CHIP_RS880) { + flush_flags |= S_0085F0_DEST_BASE_0_ENA(1); + } + r600_atom_dirty(ctx, &ctx->atom_r6xx_flush_and_inv); - } else { - ctx->atom_surface_sync.flush_flags |= flush_flags; - r600_atom_dirty(ctx, &ctx->atom_surface_sync.atom); } + /* Flush streamout caches. */ + ctx->atom_surface_sync.flush_flags |= flush_flags; + r600_atom_dirty(ctx, &ctx->atom_surface_sync.atom); + ctx->num_cs_dw_streamout_end = 0; #if 0 _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
