mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 08:58:02 +02:00
radeonsi: don't emit redundant PKT3_NUM_INSTANCES packets
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
This commit is contained in:
parent
7d6babf995
commit
d28e208213
2 changed files with 10 additions and 2 deletions
|
|
@ -47,6 +47,7 @@
|
|||
* the number shouldn't be a commonly-used one. */
|
||||
#define SI_BASE_VERTEX_UNKNOWN INT_MIN
|
||||
#define SI_RESTART_INDEX_UNKNOWN INT_MIN
|
||||
#define SI_INSTANCE_COUNT_UNKNOWN INT_MIN
|
||||
#define SI_NUM_SMOOTH_AA_SAMPLES 8
|
||||
#define SI_MAX_POINT_SIZE 2048
|
||||
#define SI_GS_PER_ES 128
|
||||
|
|
@ -925,6 +926,7 @@ struct si_context {
|
|||
int last_index_size;
|
||||
int last_base_vertex;
|
||||
int last_start_instance;
|
||||
int last_instance_count;
|
||||
int last_drawid;
|
||||
int last_sh_base_reg;
|
||||
int last_primitive_restart_en;
|
||||
|
|
@ -1374,6 +1376,7 @@ static inline void
|
|||
si_invalidate_draw_sh_constants(struct si_context *sctx)
|
||||
{
|
||||
sctx->last_base_vertex = SI_BASE_VERTEX_UNKNOWN;
|
||||
sctx->last_instance_count = SI_INSTANCE_COUNT_UNKNOWN;
|
||||
}
|
||||
|
||||
static inline unsigned
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue