vk: Flip on async texture uploads

This commit is contained in:
kd-11 2021-03-03 00:52:04 +03:00 committed by kd-11
parent 589ac1c5d4
commit b4e821c28d
6 changed files with 7 additions and 7 deletions

View file

@ -129,7 +129,7 @@ namespace vk
return std::exchange(m_sync_label, nullptr); return std::exchange(m_sync_label, nullptr);
} }
void AsyncTaskScheduler::flush(VkSemaphore wait_semaphore, VkPipelineStageFlags wait_dst_stage_mask) void AsyncTaskScheduler::flush(VkBool32 force_flush, VkSemaphore wait_semaphore, VkPipelineStageFlags wait_dst_stage_mask)
{ {
if (!m_current_cb) if (!m_current_cb)
{ {
@ -143,7 +143,7 @@ namespace vk
} }
m_current_cb->end(); m_current_cb->end();
m_current_cb->submit(get_current_renderer()->get_transfer_queue(), wait_semaphore, VK_NULL_HANDLE, nullptr, wait_dst_stage_mask, VK_FALSE); m_current_cb->submit(get_current_renderer()->get_transfer_queue(), wait_semaphore, VK_NULL_HANDLE, nullptr, wait_dst_stage_mask, force_flush);
m_last_used_cb = m_current_cb; m_last_used_cb = m_current_cb;
m_current_cb = nullptr; m_current_cb = nullptr;

View file

@ -48,7 +48,7 @@ namespace vk
command_buffer* get_current(); command_buffer* get_current();
event* get_primary_sync_label(); event* get_primary_sync_label();
void flush(VkSemaphore wait_semaphore = VK_NULL_HANDLE, VkPipelineStageFlags wait_dst_stage_mask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT); void flush(VkBool32 force_flush, VkSemaphore wait_semaphore = VK_NULL_HANDLE, VkPipelineStageFlags wait_dst_stage_mask = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT);
void kill(); void kill();
// Thread entry-point // Thread entry-point

View file

@ -263,7 +263,7 @@ namespace vk
if (vendor == driver_vendor::NVIDIA) if (vendor == driver_vendor::NVIDIA)
{ {
allow_host_buffers = (chip != chip_class::NV_mobile_kepler) ? allow_host_buffers = (chip != chip_class::NV_mobile_kepler) ?
rsx::get_location(base_address) == CELL_GCM_LOCATION_LOCAL : test_host_pointer(base_address, expected_length) :
false; false;
} }
else else

View file

@ -1939,7 +1939,7 @@ void VKGSRender::close_and_submit_command_buffer(vk::fence* pFence, VkSemaphore
const VkBool32 force_flush = !sync_success; const VkBool32 force_flush = !sync_success;
// Flush any asynchronously scheduled jobs // Flush any asynchronously scheduled jobs
g_fxo->get<vk::async_scheduler_thread>()->flush(); g_fxo->get<vk::async_scheduler_thread>()->flush(force_flush);
if (vk::test_status_interrupt(vk::heap_dirty)) if (vk::test_status_interrupt(vk::heap_dirty))
{ {

View file

@ -936,7 +936,7 @@ namespace vk
} }
vk::upload_image(cmd, image, subresource_layout, gcm_format, input_swizzled, mipmaps, image->aspect(), vk::upload_image(cmd, image, subresource_layout, gcm_format, input_swizzled, mipmaps, image->aspect(),
*m_texture_upload_heap, upload_heap_align_default, initialize_image_layout | upload_contents_inline); *m_texture_upload_heap, upload_heap_align_default, initialize_image_layout | upload_contents_async);
vk::leave_uninterruptible(); vk::leave_uninterruptible();

View file

@ -203,7 +203,7 @@ namespace vk
u32 dst_queue = new_queue_family; u32 dst_queue = new_queue_family;
if (current_queue_family == VK_QUEUE_FAMILY_IGNORED) if (current_queue_family == VK_QUEUE_FAMILY_IGNORED)
{ {
// Implicit acquisition // Implicit acquisition
dst_queue = VK_QUEUE_FAMILY_IGNORED; dst_queue = VK_QUEUE_FAMILY_IGNORED;
} }