mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
radv: realign vgt flush on hawaii workaround with radeonsi.
This realigns this code with the radeonsi version and fixes the indirect case to work properly. Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
4f395e28a7
commit
1dbcfd2941
1 changed files with 12 additions and 6 deletions
|
|
@ -802,12 +802,18 @@ si_get_ia_multi_vgt_param(struct radv_cmd_buffer *cmd_buffer,
|
|||
if (SI_GS_PER_ES / primgroup_size >= cmd_buffer->device->gs_table_depth - 3)
|
||||
partial_es_wave = true;
|
||||
|
||||
/* Hw bug with single-primitive instances and SWITCH_ON_EOI
|
||||
* on multi-SE chips. */
|
||||
if (info->max_se >= 2 && ia_switch_on_eoi &&
|
||||
((instanced_draw || indirect_draw) &&
|
||||
num_prims <= 1))
|
||||
cmd_buffer->state.flush_bits |= RADV_CMD_FLAG_VGT_FLUSH;
|
||||
/* GS hw bug with single-primitive instances and SWITCH_ON_EOI.
|
||||
* The hw doc says all multi-SE chips are affected, but amdgpu-pro Vulkan
|
||||
* only applies it to Hawaii. Do what amdgpu-pro Vulkan does.
|
||||
*/
|
||||
if (family == CHIP_HAWAII && ia_switch_on_eoi) {
|
||||
bool set_vgt_flush = indirect_draw;
|
||||
if (!set_vgt_flush && instanced_draw)
|
||||
if (num_prims <= 1)
|
||||
set_vgt_flush = true;
|
||||
if (set_vgt_flush)
|
||||
cmd_buffer->state.flush_bits |= RADV_CMD_FLAG_VGT_FLUSH;
|
||||
}
|
||||
}
|
||||
|
||||
return S_028AA8_SWITCH_ON_EOP(ia_switch_on_eop) |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue