mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-21 22:20:14 +01:00
anv: emit 3DSTATE_HS for each primitive on gfx12
This is Wa_16011107343, same workaround as commit 880a3efe6c
but for gfx12.
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21551>
This commit is contained in:
parent
df9f71d795
commit
75968398f3
1 changed files with 17 additions and 16 deletions
|
|
@ -3391,8 +3391,9 @@ genX(cmd_buffer_flush_gfx_state)(struct anv_cmd_buffer *cmd_buffer)
|
||||||
cmd_buffer->state.push_descriptors_dirty &= ~push_descriptor_dirty;
|
cmd_buffer->state.push_descriptors_dirty &= ~push_descriptor_dirty;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Wa_1306463417 - Send HS state for every primitive on gfx11. */
|
/* Wa_1306463417, Wa_16011107343 - Send HS state for every primitive. */
|
||||||
if (cmd_buffer->state.gfx.dirty & ANV_CMD_DIRTY_PIPELINE || GFX_VER == 11) {
|
if (cmd_buffer->state.gfx.dirty & ANV_CMD_DIRTY_PIPELINE ||
|
||||||
|
(GFX_VER == 11 || GFX_VER == 12)) {
|
||||||
genX(emit_hs)(cmd_buffer);
|
genX(emit_hs)(cmd_buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3555,9 +3556,9 @@ anv_use_generated_draws(const struct anv_cmd_buffer *cmd_buffer, uint32_t count)
|
||||||
{
|
{
|
||||||
const struct anv_device *device = cmd_buffer->device;
|
const struct anv_device *device = cmd_buffer->device;
|
||||||
|
|
||||||
#if GFX_VER == 11
|
#if GFX_VER == 11 || GFX_VER == 12
|
||||||
/* Limit generated draws to pipelines without HS stage. This makes things
|
/* Limit generated draws to pipelines without HS stage. This makes things
|
||||||
* simpler for implementing Wa_1306463417.
|
* simpler for implementing Wa_1306463417, Wa_16011107343.
|
||||||
*/
|
*/
|
||||||
if (anv_pipeline_has_stage(cmd_buffer->state.gfx.pipeline,
|
if (anv_pipeline_has_stage(cmd_buffer->state.gfx.pipeline,
|
||||||
MESA_SHADER_TESS_CTRL)) {
|
MESA_SHADER_TESS_CTRL)) {
|
||||||
|
|
@ -4201,10 +4202,10 @@ void genX(CmdDrawMultiEXT)(
|
||||||
#else
|
#else
|
||||||
vk_foreach_multi_draw(draw, i, pVertexInfo, drawCount, stride) {
|
vk_foreach_multi_draw(draw, i, pVertexInfo, drawCount, stride) {
|
||||||
|
|
||||||
/* Wa_1306463417 - Send HS state for every primitive, first
|
/* Wa_1306463417, Wa_16011107343 - Send HS state for every primitive,
|
||||||
* one was handled by cmd_buffer_flush_gfx_state.
|
* first one was handled by cmd_buffer_flush_gfx_state.
|
||||||
*/
|
*/
|
||||||
if (i && GFX_VER == 11)
|
if (i && (GFX_VER == 11 || GFX_VER == 12))
|
||||||
genX(emit_hs)(cmd_buffer);
|
genX(emit_hs)(cmd_buffer);
|
||||||
|
|
||||||
anv_batch_emit(&cmd_buffer->batch, GENX(3DPRIMITIVE_EXTENDED), prim) {
|
anv_batch_emit(&cmd_buffer->batch, GENX(3DPRIMITIVE_EXTENDED), prim) {
|
||||||
|
|
@ -4408,10 +4409,10 @@ void genX(CmdDrawMultiIndexedEXT)(
|
||||||
#else
|
#else
|
||||||
vk_foreach_multi_draw_indexed(draw, i, pIndexInfo, drawCount, stride) {
|
vk_foreach_multi_draw_indexed(draw, i, pIndexInfo, drawCount, stride) {
|
||||||
|
|
||||||
/* Wa_1306463417 - Send HS state for every primitive, first
|
/* Wa_1306463417, Wa_16011107343 - Send HS state for every primitive,
|
||||||
* one was handled by cmd_buffer_flush_gfx_state.
|
* first one was handled by cmd_buffer_flush_gfx_state.
|
||||||
*/
|
*/
|
||||||
if (i && GFX_VER == 11)
|
if (i && (GFX_VER == 11 || GFX_VER == 12))
|
||||||
genX(emit_hs)(cmd_buffer);
|
genX(emit_hs)(cmd_buffer);
|
||||||
|
|
||||||
anv_batch_emit(&cmd_buffer->batch, GENX(3DPRIMITIVE_EXTENDED), prim) {
|
anv_batch_emit(&cmd_buffer->batch, GENX(3DPRIMITIVE_EXTENDED), prim) {
|
||||||
|
|
@ -4658,10 +4659,10 @@ emit_indirect_draws(struct anv_cmd_buffer *cmd_buffer,
|
||||||
|
|
||||||
load_indirect_parameters(cmd_buffer, draw, indexed, i);
|
load_indirect_parameters(cmd_buffer, draw, indexed, i);
|
||||||
|
|
||||||
/* Wa_1306463417 - Send HS state for every primitive HS, first
|
/* Wa_1306463417, Wa_16011107343 - Send HS state for every primitive,
|
||||||
* one was handled by cmd_buffer_flush_gfx_state.
|
* first one was handled by cmd_buffer_flush_gfx_state.
|
||||||
*/
|
*/
|
||||||
if (i && GFX_VER == 11)
|
if (i && (GFX_VER == 11 || GFX_VER == 12))
|
||||||
genX(emit_hs)(cmd_buffer);
|
genX(emit_hs)(cmd_buffer);
|
||||||
|
|
||||||
anv_batch_emit(&cmd_buffer->batch,
|
anv_batch_emit(&cmd_buffer->batch,
|
||||||
|
|
@ -4892,10 +4893,10 @@ emit_indirect_count_draws(struct anv_cmd_buffer *cmd_buffer,
|
||||||
|
|
||||||
load_indirect_parameters(cmd_buffer, draw, indexed, i);
|
load_indirect_parameters(cmd_buffer, draw, indexed, i);
|
||||||
|
|
||||||
/* Wa_1306463417 - Send HS state for every primitive HS, first
|
/* Wa_1306463417, Wa_16011107343 - Send HS state for every primitive,
|
||||||
* one was handled by cmd_buffer_flush_gfx_state.
|
* first one was handled by cmd_buffer_flush_gfx_state.
|
||||||
*/
|
*/
|
||||||
if (i && GFX_VER == 11)
|
if (i && (GFX_VER == 11 || GFX_VER == 12))
|
||||||
genX(emit_hs)(cmd_buffer);
|
genX(emit_hs)(cmd_buffer);
|
||||||
|
|
||||||
anv_batch_emit(&cmd_buffer->batch,
|
anv_batch_emit(&cmd_buffer->batch,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue