diff options
author | Marek Olšák <[email protected]> | 2018-11-12 20:38:46 -0500 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2019-01-02 15:01:50 -0500 |
commit | d28e20821349f6ba0172904d8c54e16d734de8d6 (patch) | |
tree | 667ff0c12fa4b889c26d12b1765257bc483838aa /src/gallium/drivers/radeonsi/si_state_draw.c | |
parent | 7d6babf995d48d64e383c4180f9b660522958f86 (diff) |
radeonsi: don't emit redundant PKT3_NUM_INSTANCES packets
Tested-by: Dieter Nützel <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_state_draw.c')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_state_draw.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c index d011adb2cad..cfd904e621c 100644 --- a/src/gallium/drivers/radeonsi/si_state_draw.c +++ b/src/gallium/drivers/radeonsi/si_state_draw.c @@ -813,10 +813,15 @@ static void si_emit_draw_packets(struct si_context *sctx, radeon_emit(cs, di_src_sel); } } else { + unsigned instance_count = info->instance_count; int base_vertex; - radeon_emit(cs, PKT3(PKT3_NUM_INSTANCES, 0, 0)); - radeon_emit(cs, info->instance_count); + if (sctx->last_instance_count == SI_INSTANCE_COUNT_UNKNOWN || + sctx->last_instance_count != instance_count) { + radeon_emit(cs, PKT3(PKT3_NUM_INSTANCES, 0, 0)); + radeon_emit(cs, instance_count); + sctx->last_instance_count = instance_count; + } /* Base vertex and start instance. */ base_vertex = index_size ? info->index_bias : info->start; |