diff --git a/gfx/drivers/vulkan.c b/gfx/drivers/vulkan.c
index b7ac31f725..1917e2df3e 100644
--- a/gfx/drivers/vulkan.c
+++ b/gfx/drivers/vulkan.c
@@ -1967,7 +1967,7 @@ static bool vulkan_frame(void *data, const void *frame,
                {
                   struct vk_texture *dynamic = optimal;
                   struct vk_texture *staging = texture;
-                  VULKAN_SYNC_TEXTURE_TO_GPU_COND_PTR(vk, texture);
+                  VULKAN_SYNC_TEXTURE_TO_GPU_COND_PTR(vk, staging);
                   VULKAN_COPY_STAGING_TO_DYNAMIC(vk, vk->cmd,
                         dynamic, staging);
                   vk->menu.dirty[vk->menu.last_index] = false;
@@ -2449,9 +2449,10 @@ static void vulkan_set_texture_frame(void *data,
             NULL, rgb32 ? NULL : &br_swizzle,
             VULKAN_TEXTURE_DYNAMIC);
    }
-   else if (texture->need_manual_cache_management
-         && texture->memory != VK_NULL_HANDLE)
-       VULKAN_SYNC_TEXTURE_TO_GPU(vk->context->device, texture->memory);
+   else
+   {
+      VULKAN_SYNC_TEXTURE_TO_GPU_COND_PTR(vk, texture);
+   }
 
    vkUnmapMemory(vk->context->device, texture->memory);
    vk->menu.dirty[index] = true;