radv: enable compiling PS epilogs on-demand for dynamic color blend equations

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20281>
This commit is contained in:
Samuel Pitoiset
2023-01-10 10:48:01 +01:00
committed by Marge Bot
parent daa2aeaa0c
commit 4041be0f6f
3 changed files with 6 additions and 3 deletions

View File

@@ -8683,7 +8683,8 @@ radv_emit_all_graphics_states(struct radv_cmd_buffer *cmd_buffer, const struct r
} else if ((cmd_buffer->state.emitted_graphics_pipeline != cmd_buffer->state.graphics_pipeline || } else if ((cmd_buffer->state.emitted_graphics_pipeline != cmd_buffer->state.graphics_pipeline ||
(cmd_buffer->state.dirty & (RADV_CMD_DIRTY_DYNAMIC_COLOR_WRITE_MASK | (cmd_buffer->state.dirty & (RADV_CMD_DIRTY_DYNAMIC_COLOR_WRITE_MASK |
RADV_CMD_DIRTY_DYNAMIC_COLOR_BLEND_ENABLE | RADV_CMD_DIRTY_DYNAMIC_COLOR_BLEND_ENABLE |
RADV_CMD_DIRTY_DYNAMIC_ALPHA_TO_COVERAGE_ENABLE)))) { RADV_CMD_DIRTY_DYNAMIC_ALPHA_TO_COVERAGE_ENABLE |
RADV_CMD_DIRTY_DYNAMIC_COLOR_BLEND_EQUATION)))) {
ps_epilog = lookup_ps_epilog(cmd_buffer); ps_epilog = lookup_ps_epilog(cmd_buffer);
if (!ps_epilog) { if (!ps_epilog) {
vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_HOST_MEMORY); vk_command_buffer_set_error(&cmd_buffer->vk, VK_ERROR_OUT_OF_HOST_MEMORY);

View File

@@ -3805,7 +3805,8 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr
const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *features = (const void *)ext; const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *features = (const void *)ext;
if (features->extendedDynamicState3ColorBlendEnable || if (features->extendedDynamicState3ColorBlendEnable ||
features->extendedDynamicState3ColorWriteMask || features->extendedDynamicState3ColorWriteMask ||
features->extendedDynamicState3AlphaToCoverageEnable) features->extendedDynamicState3AlphaToCoverageEnable ||
features->extendedDynamicState3ColorBlendEquation)
ps_epilogs = true; ps_epilogs = true;
break; break;
} }

View File

@@ -2090,7 +2090,8 @@ radv_pipeline_has_dynamic_ps_epilog(const struct radv_graphics_pipeline *pipelin
/* These dynamic states need to compile PS epilogs on-demand. */ /* These dynamic states need to compile PS epilogs on-demand. */
return pipeline->dynamic_states & (RADV_DYNAMIC_COLOR_BLEND_ENABLE | return pipeline->dynamic_states & (RADV_DYNAMIC_COLOR_BLEND_ENABLE |
RADV_DYNAMIC_COLOR_WRITE_MASK | RADV_DYNAMIC_COLOR_WRITE_MASK |
RADV_DYNAMIC_ALPHA_TO_COVERAGE_ENABLE); RADV_DYNAMIC_ALPHA_TO_COVERAGE_ENABLE |
RADV_DYNAMIC_COLOR_BLEND_EQUATION);
} }
struct radv_pipeline_key struct radv_pipeline_key