diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 9b200d61a8d..9743c6cf92f 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -7800,11 +7800,32 @@ radv_handle_rendering_image_transition(struct radv_cmd_buffer *cmd_buffer, struc } static void -radv_init_default_dynamic_graphics_state(struct radv_cmd_buffer *cmd_buffer) +radv_init_default_state(struct radv_cmd_buffer *cmd_buffer) { - vk_dynamic_graphics_state_init(&cmd_buffer->state.dynamic.vk); + const struct radv_device *device = radv_cmd_buffer_device(cmd_buffer); + const struct radv_physical_device *pdev = radv_device_physical(device); - cmd_buffer->state.dynamic.color_write_enable = 0xffffffffu; + cmd_buffer->state.predication_type = -1; + + if (cmd_buffer->qf == RADV_QUEUE_GENERAL) { + vk_dynamic_graphics_state_init(&cmd_buffer->state.dynamic.vk); + + cmd_buffer->state.dynamic.color_write_enable = 0xffffffffu; + + cmd_buffer->state.last_index_type = -1; + cmd_buffer->state.last_primitive_restart_en = pdev->info.gfx_level >= GFX11 ? false : -1; + cmd_buffer->state.last_num_instances = -1; + cmd_buffer->state.last_first_instance = -1; + cmd_buffer->state.last_drawid = -1; + cmd_buffer->state.last_subpass_color_count = MAX_RTS; + + cmd_buffer->state.dirty |= RADV_CMD_DIRTY_GUARDBAND | RADV_CMD_DIRTY_OCCLUSION_QUERY | + RADV_CMD_DIRTY_DB_SHADER_CONTROL | RADV_CMD_DIRTY_FRAGMENT_OUTPUT; + if (pdev->info.rbplus_allowed) + cmd_buffer->state.dirty |= RADV_CMD_DIRTY_RBPLUS; + + cmd_buffer->state.dirty_dynamic |= RADV_DYNAMIC_ALL; + } } VKAPI_ATTR VkResult VKAPI_CALL @@ -7820,25 +7841,9 @@ radv_BeginCommandBuffer(VkCommandBuffer commandBuffer, const VkCommandBufferBegi if (cmd_buffer->qf == RADV_QUEUE_SPARSE) return result; - cmd_buffer->state.last_index_type = -1; - cmd_buffer->state.last_primitive_restart_en = pdev->info.gfx_level >= GFX11 ? false : -1; - cmd_buffer->state.last_num_instances = -1; - cmd_buffer->state.last_first_instance = -1; - cmd_buffer->state.last_drawid = -1; - cmd_buffer->state.last_subpass_color_count = MAX_RTS; - cmd_buffer->state.predication_type = -1; - cmd_buffer->usage_flags = pBeginInfo->flags; - cmd_buffer->state.dirty |= RADV_CMD_DIRTY_GUARDBAND | RADV_CMD_DIRTY_OCCLUSION_QUERY | - RADV_CMD_DIRTY_DB_SHADER_CONTROL | RADV_CMD_DIRTY_FRAGMENT_OUTPUT; - if (pdev->info.rbplus_allowed) - cmd_buffer->state.dirty |= RADV_CMD_DIRTY_RBPLUS; - - cmd_buffer->state.dirty_dynamic |= RADV_DYNAMIC_ALL; - - if (cmd_buffer->qf == RADV_QUEUE_GENERAL) - radv_init_default_dynamic_graphics_state(cmd_buffer); + radv_init_default_state(cmd_buffer); if (cmd_buffer->qf == RADV_QUEUE_COMPUTE || device->vk.enabled_features.taskShader) { uint32_t pred_value = 0;