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);
}
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)
{
@ -143,7 +143,7 @@ namespace vk
}
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_current_cb = nullptr;

View file

@ -48,7 +48,7 @@ namespace vk
command_buffer* get_current();
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();
// Thread entry-point

View file

@ -263,7 +263,7 @@ namespace vk
if (vendor == driver_vendor::NVIDIA)
{
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;
}
else

View file

@ -1939,7 +1939,7 @@ void VKGSRender::close_and_submit_command_buffer(vk::fence* pFence, VkSemaphore
const VkBool32 force_flush = !sync_success;
// 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))
{

View file

@ -936,7 +936,7 @@ namespace vk
}
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();

View file

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