From 6a2b264526c5ca7c5ecf8fb734fc6db6494f7d9b Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 19 Jan 2024 13:26:41 +0100 Subject: [PATCH] radv: emit more default states for ESO on GFX10.3+ Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 5 +++++ src/amd/vulkan/radv_pipeline_graphics.c | 4 ++-- src/amd/vulkan/radv_private.h | 6 ++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 573fc3b1417..a211570d128 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -9077,6 +9077,11 @@ radv_emit_shaders(struct radv_cmd_buffer *cmd_buffer) radv_emit_vgt_shader_config(device, cs, &vgt_shader_cfg_key); radv_emit_vgt_gs_out(device, cs, vgt_gs_out); + if (cmd_buffer->device->physical_device->rad_info.gfx_level >= GFX10_3) { + gfx103_emit_vgt_draw_payload_cntl(cs, cmd_buffer->state.shaders[MESA_SHADER_MESH], false); + gfx103_emit_vrs_state(device, cs, NULL, false, false, false); + } + cmd_buffer->state.dirty &= ~RADV_CMD_DIRTY_SHADERS; } diff --git a/src/amd/vulkan/radv_pipeline_graphics.c b/src/amd/vulkan/radv_pipeline_graphics.c index e752cb719da..927f2eb3a97 100644 --- a/src/amd/vulkan/radv_pipeline_graphics.c +++ b/src/amd/vulkan/radv_pipeline_graphics.c @@ -3532,7 +3532,7 @@ radv_emit_vgt_gs_out(const struct radv_device *device, struct radeon_cmdbuf *ctx } } -static void +void gfx103_emit_vgt_draw_payload_cntl(struct radeon_cmdbuf *ctx_cs, const struct radv_shader *mesh_shader, bool enable_vrs) { bool enable_prim_payload = false; @@ -3568,7 +3568,7 @@ gfx103_pipeline_vrs_coarse_shading(const struct radv_device *device, const struc return true; } -static void +void gfx103_emit_vrs_state(const struct radv_device *device, struct radeon_cmdbuf *ctx_cs, const struct radv_shader *ps, bool enable_vrs, bool enable_vrs_coarse_shading, bool force_vrs_per_vertex) { diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 0f50cd3279f..b923d3dd24c 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -2365,6 +2365,12 @@ void radv_emit_vgt_gs_out(const struct radv_device *device, struct radeon_cmdbuf void radv_emit_vgt_gs_mode(const struct radv_device *device, struct radeon_cmdbuf *ctx_cs, const struct radv_shader *last_vgt_api_shader); +void gfx103_emit_vgt_draw_payload_cntl(struct radeon_cmdbuf *ctx_cs, const struct radv_shader *mesh_shader, + bool enable_vrs); + +void gfx103_emit_vrs_state(const struct radv_device *device, struct radeon_cmdbuf *ctx_cs, const struct radv_shader *ps, + bool enable_vrs, bool enable_vrs_coarse_shading, bool force_vrs_per_vertex); + void radv_emit_geometry_shader(const struct radv_device *device, struct radeon_cmdbuf *ctx_cs, struct radeon_cmdbuf *cs, const struct radv_shader *gs, const struct radv_shader *es, const struct radv_shader *gs_copy_shader);