diff --git a/src/kosmickrisp/vulkan/kk_encoder.c b/src/kosmickrisp/vulkan/kk_encoder.c index a972d45c87b..eeb91c561c5 100644 --- a/src/kosmickrisp/vulkan/kk_encoder.c +++ b/src/kosmickrisp/vulkan/kk_encoder.c @@ -167,9 +167,6 @@ upload_queue_writes(struct kk_cmd_buffer *cmd) } enc->copy_query_pool_result_infos.size = 0u; } - - /* All immediate write done, reset encoder */ - kk_encoder_signal_fence_and_end(cmd); } static void diff --git a/src/kosmickrisp/vulkan/kk_event.c b/src/kosmickrisp/vulkan/kk_event.c index 3a16d19e49e..9cee3051ff7 100644 --- a/src/kosmickrisp/vulkan/kk_event.c +++ b/src/kosmickrisp/vulkan/kk_event.c @@ -96,10 +96,9 @@ kk_CmdSetEvent2(VkCommandBuffer commandBuffer, VkEvent _event, VK_FROM_HANDLE(kk_cmd_buffer, cmd, commandBuffer); enum kk_encoder_type last_used = cmd->encoder->main.last_used; kk_cmd_write(cmd, event->bo->map, event->addr, VK_EVENT_SET); - if (last_used != KK_ENC_NONE) - kk_encoder_signal_fence_and_end(cmd); - else + if (last_used == KK_ENC_NONE || last_used == KK_ENC_COMPUTE) upload_queue_writes(cmd); + kk_encoder_signal_fence_and_end(cmd); /* If we were inside a render pass, restart it loading attachments */ if (last_used == KK_ENC_RENDER) { @@ -119,10 +118,9 @@ kk_CmdResetEvent2(VkCommandBuffer commandBuffer, VkEvent _event, VK_FROM_HANDLE(kk_cmd_buffer, cmd, commandBuffer); enum kk_encoder_type last_used = cmd->encoder->main.last_used; kk_cmd_write(cmd, event->bo->map, event->addr, VK_EVENT_RESET); - if (last_used != KK_ENC_NONE) - kk_encoder_signal_fence_and_end(cmd); - else + if (last_used == KK_ENC_NONE || last_used == KK_ENC_COMPUTE) upload_queue_writes(cmd); + kk_encoder_signal_fence_and_end(cmd); /* If we were inside a render pass, restart it loading attachments */ if (last_used == KK_ENC_RENDER) { diff --git a/src/kosmickrisp/vulkan/kk_query_pool.c b/src/kosmickrisp/vulkan/kk_query_pool.c index 60d252c1573..987b9299893 100644 --- a/src/kosmickrisp/vulkan/kk_query_pool.c +++ b/src/kosmickrisp/vulkan/kk_query_pool.c @@ -424,6 +424,7 @@ kk_CmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQueryPool queryPool, util_dynarray_append(&cmd->encoder->copy_query_pool_result_infos, info); /* If we are not mid encoder, just upload the writes */ - if (cmd->encoder->main.last_used == KK_ENC_NONE) + enum kk_encoder_type last_used = cmd->encoder->main.last_used; + if (last_used == KK_ENC_NONE || last_used == KK_ENC_COMPUTE) upload_queue_writes(cmd); }