mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-26 04:32:35 +01:00
vk: Ignore queue transfer stuff when using 'fast' mode
This commit is contained in:
parent
44cc254620
commit
c8ad8b18bb
@ -811,7 +811,8 @@ namespace vk
|
|||||||
const vk::command_buffer* pcmd = nullptr;
|
const vk::command_buffer* pcmd = nullptr;
|
||||||
if (flags & image_upload_options::upload_contents_async)
|
if (flags & image_upload_options::upload_contents_async)
|
||||||
{
|
{
|
||||||
auto async_cmd = g_fxo->get<AsyncTaskScheduler>().get_current();
|
auto& async_scheduler = g_fxo->get<AsyncTaskScheduler>();
|
||||||
|
auto async_cmd = async_scheduler.get_current();
|
||||||
async_cmd->begin();
|
async_cmd->begin();
|
||||||
pcmd = async_cmd;
|
pcmd = async_cmd;
|
||||||
|
|
||||||
@ -819,6 +820,20 @@ namespace vk
|
|||||||
{
|
{
|
||||||
flags |= image_upload_options::initialize_image_layout;
|
flags |= image_upload_options::initialize_image_layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Queue transfer stuff. Must release from primary if owned and acquire in secondary.
|
||||||
|
// Ignore queue transfers when running in the hacky "fast" mode. We're already violating spec there.
|
||||||
|
if (dst_image->current_layout != VK_IMAGE_LAYOUT_UNDEFINED && async_scheduler.is_host_mode())
|
||||||
|
{
|
||||||
|
// Release barrier
|
||||||
|
dst_image->queue_release(primary_cb, pcmd->get_queue_family(), dst_image->current_layout);
|
||||||
|
|
||||||
|
// Acquire barrier. This is not needed if we're going to be changing layouts later anyway (implicit acquire)
|
||||||
|
if (!(flags & image_upload_options::initialize_image_layout))
|
||||||
|
{
|
||||||
|
dst_image->queue_acquire(*pcmd, dst_image->current_layout);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -832,21 +847,10 @@ namespace vk
|
|||||||
|
|
||||||
ensure(pcmd);
|
ensure(pcmd);
|
||||||
|
|
||||||
// Queue transfer stuff. Must release from primary if owned and acquire in secondary.
|
|
||||||
const bool need_queue_xfer = dst_image->current_layout != VK_IMAGE_LAYOUT_UNDEFINED && primary_cb.get_queue_family() != pcmd->get_queue_family();
|
|
||||||
if (need_queue_xfer)
|
|
||||||
{
|
|
||||||
dst_image->queue_release(primary_cb, pcmd->get_queue_family(), dst_image->current_layout);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flags & image_upload_options::initialize_image_layout)
|
if (flags & image_upload_options::initialize_image_layout)
|
||||||
{
|
{
|
||||||
dst_image->change_layout(*pcmd, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
|
dst_image->change_layout(*pcmd, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
|
||||||
}
|
}
|
||||||
else if (need_queue_xfer)
|
|
||||||
{
|
|
||||||
dst_image->queue_acquire(*pcmd, dst_image->current_layout);
|
|
||||||
}
|
|
||||||
|
|
||||||
return *pcmd;
|
return *pcmd;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user