r600g: use the new code for streamout flush as well
authorMarek Olšák <maraeo@gmail.com>
Mon, 30 Jan 2012 08:29:40 +0000 (09:29 +0100)
committerMarek Olšák <maraeo@gmail.com>
Tue, 31 Jan 2012 22:12:31 +0000 (23:12 +0100)
src/gallium/drivers/r600/r600_hw_context.c

index ea7978250bf8b58c7289ab7558c93a7cb9890ff5..a7f132c0bbfacbc9cc4439f77f2c478737180b13 100644 (file)
@@ -1940,7 +1940,7 @@ void r600_context_streamout_begin(struct r600_context *ctx)
        ctx->num_cs_dw_streamout_end =
                12 + /* flush_vgt_streamout */
                util_bitcount(buffer_en) * 8 +
-               8;
+               3;
 
        r600_need_cs_space(ctx,
                           12 + /* flush_vgt_streamout */
@@ -2056,15 +2056,11 @@ void r600_context_streamout_end(struct r600_context *ctx)
                r600_set_streamout_enable(ctx, 0);
        }
 
-       if (ctx->screen->family < CHIP_RV770) {
-               cs->buf[cs->cdw++] = PKT3(PKT3_EVENT_WRITE, 0, 0);
-               cs->buf[cs->cdw++] = EVENT_TYPE(EVENT_TYPE_CACHE_FLUSH_AND_INV_EVENT) | EVENT_INDEX(0);
+       if (ctx->screen->chip_class < R700) {
+               r600_atom_dirty(ctx, &ctx->atom_r6xx_flush_and_inv);
        } else {
-               cs->buf[cs->cdw++] = PKT3(PKT3_SURFACE_SYNC, 3, 0);
-               cs->buf[cs->cdw++] = flush_flags;     /* CP_COHER_CNTL */
-               cs->buf[cs->cdw++] = 0xffffffff;      /* CP_COHER_SIZE */
-               cs->buf[cs->cdw++] = 0;               /* CP_COHER_BASE */
-               cs->buf[cs->cdw++] = 0x0000000A;      /* POLL_INTERVAL */
+               ctx->atom_surface_sync.flush_flags |= flush_flags;
+               r600_atom_dirty(ctx, &ctx->atom_surface_sync.atom);
        }
 
        ctx->num_cs_dw_streamout_end = 0;
@@ -2105,6 +2101,5 @@ void r600_context_draw_opaque_count(struct r600_context *ctx, struct r600_so_tar
        cs->buf[cs->cdw++] = 0; /* unused */
 
        cs->buf[cs->cdw++] = PKT3(PKT3_NOP, 0, 0);
-       cs->buf[cs->cdw++] = r600_context_bo_reloc(ctx,  t->filled_size,
-                                                            RADEON_USAGE_READ);
+       cs->buf[cs->cdw++] = r600_context_bo_reloc(ctx, t->filled_size, RADEON_USAGE_READ);
 }