OSDN Git Service

r600g: emit PS_PARTIAL_FLUSH at the beginning of CS
authorMarek Olšák <maraeo@gmail.com>
Sun, 7 Oct 2012 13:38:32 +0000 (15:38 +0200)
committerMarek Olšák <maraeo@gmail.com>
Tue, 9 Oct 2012 22:17:03 +0000 (00:17 +0200)
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
src/gallium/drivers/r600/evergreen_state.c
src/gallium/drivers/r600/r600_state.c

index bc3aedb..2e58a28 100644 (file)
@@ -2441,6 +2441,10 @@ static void cayman_init_atom_start_cs(struct r600_context *rctx)
        r600_store_value(cb, 0x80000000);
        r600_store_value(cb, 0x80000000);
 
+       /* We're setting config registers here. */
+       r600_store_value(cb, PKT3(PKT3_EVENT_WRITE, 0, 0));
+       r600_store_value(cb, EVENT_TYPE(EVENT_TYPE_PS_PARTIAL_FLUSH) | EVENT_INDEX(4));
+
        r600_store_config_reg_seq(cb, R_008C00_SQ_CONFIG, 2);
        r600_store_value(cb, S_008C00_EXPORT_SRC_C(1)); /* R_008C00_SQ_CONFIG */
        /* always set the temp clauses */
@@ -2842,6 +2846,10 @@ void evergreen_init_atom_start_cs(struct r600_context *rctx)
        r600_store_value(cb, 0x80000000);
        r600_store_value(cb, 0x80000000);
 
+       /* We're setting config registers here. */
+       r600_store_value(cb, PKT3(PKT3_EVENT_WRITE, 0, 0));
+       r600_store_value(cb, EVENT_TYPE(EVENT_TYPE_PS_PARTIAL_FLUSH) | EVENT_INDEX(4));
+
        evergreen_init_common_regs(cb, rctx->chip_class
                        , rctx->family, rctx->screen->info.drm_minor);
 
index 5244143..567835f 100644 (file)
@@ -2246,6 +2246,10 @@ void r600_init_atom_start_cs(struct r600_context *rctx)
        r600_store_value(cb, 0x80000000);
        r600_store_value(cb, 0x80000000);
 
+       /* We're setting config registers here. */
+       r600_store_value(cb, PKT3(PKT3_EVENT_WRITE, 0, 0));
+       r600_store_value(cb, EVENT_TYPE(EVENT_TYPE_PS_PARTIAL_FLUSH) | EVENT_INDEX(4));
+
        family = rctx->family;
        ps_prio = 0;
        vs_prio = 1;