Fix vulkan compilation warnings

This commit is contained in:
kd-11 2022-03-22 21:37:49 +03:00 committed by kd-11
parent 1ab5b481ff
commit af0e1f609e
7 changed files with 16 additions and 8 deletions

View file

@ -20,7 +20,7 @@ namespace vk
return; return;
} }
init_config_options(); init_config_options(mode);
} }
AsyncTaskScheduler::~AsyncTaskScheduler() AsyncTaskScheduler::~AsyncTaskScheduler()
@ -32,7 +32,7 @@ namespace vk
} }
} }
void AsyncTaskScheduler::init_config_options() void AsyncTaskScheduler::init_config_options(vk_gpu_scheduler_mode mode)
{ {
std::lock_guard lock(m_config_mutex); std::lock_guard lock(m_config_mutex);
if (std::exchange(m_options_initialized, true)) if (std::exchange(m_options_initialized, true))
@ -41,13 +41,13 @@ namespace vk
return; return;
} }
m_use_host_scheduler = g_cfg.video.vk.asynchronous_scheduler == vk_gpu_scheduler_mode::safe || g_cfg.video.strict_rendering_mode; m_use_host_scheduler = (mode == vk_gpu_scheduler_mode::safe) || g_cfg.video.strict_rendering_mode;
rsx_log.notice("Asynchronous task scheduler is active running in %s mode", m_use_host_scheduler? "'Safe'" : "'Fast'"); rsx_log.notice("Asynchronous task scheduler is active running in %s mode", m_use_host_scheduler? "'Safe'" : "'Fast'");
} }
void AsyncTaskScheduler::delayed_init() void AsyncTaskScheduler::delayed_init()
{ {
init_config_options(); ensure(m_options_initialized);
auto pdev = get_current_renderer(); auto pdev = get_current_renderer();
m_command_pool.create(*const_cast<render_device*>(pdev), pdev->get_transfer_queue_family()); m_command_pool.create(*const_cast<render_device*>(pdev), pdev->get_transfer_queue_family());

View file

@ -39,7 +39,7 @@ namespace vk
shared_mutex m_submit_mutex; shared_mutex m_submit_mutex;
void init_config_options(); void init_config_options(vk_gpu_scheduler_mode mode);
void delayed_init(); void delayed_init();
void insert_sync_event(); void insert_sync_event();

View file

@ -1544,7 +1544,7 @@ bool VKGSRender::release_GCM_label(u32 address, u32 args)
return false; return false;
} }
m_host_data_ptr->last_label_release_event = ++m_host_data_ptr->event_counter; m_host_data_ptr->last_label_release_event = m_host_data_ptr->inc_counter();
if (m_host_data_ptr->texture_load_request_event > m_host_data_ptr->last_label_submit_event) if (m_host_data_ptr->texture_load_request_event > m_host_data_ptr->last_label_submit_event)
{ {

View file

@ -89,7 +89,7 @@ namespace vk
using download_buffer_object = void*; using download_buffer_object = void*;
using barrier_descriptor_t = rsx::deferred_clipped_region<vk::render_target*>; using barrier_descriptor_t = rsx::deferred_clipped_region<vk::render_target*>;
static std::pair<VkImageUsageFlags, VkImageCreateFlags> get_attachment_create_flags(VkFormat format, u8 samples) static std::pair<VkImageUsageFlags, VkImageCreateFlags> get_attachment_create_flags(VkFormat format, u8 /*samples*/)
{ {
if (g_cfg.video.strict_rendering_mode) if (g_cfg.video.strict_rendering_mode)
{ {

View file

@ -1154,7 +1154,7 @@ namespace vk
// Queue a sync update on the CB doing the load // Queue a sync update on the CB doing the load
auto [host_data, host_buffer] = static_cast<VKGSRender*>(rsxthr)->map_host_object_data(); auto [host_data, host_buffer] = static_cast<VKGSRender*>(rsxthr)->map_host_object_data();
ensure(host_data); ensure(host_data);
const auto event_id = ++host_data->event_counter; const auto event_id = host_data->inc_counter();
host_data->texture_load_request_event = event_id; host_data->texture_load_request_event = event_id;
vkCmdUpdateBuffer(cmd2, host_buffer, ::offset32(&vk::host_data_t::texture_load_complete_event), sizeof(u64), &event_id); vkCmdUpdateBuffer(cmd2, host_buffer, ::offset32(&vk::host_data_t::texture_load_complete_event), sizeof(u64), &event_id);
} }

View file

@ -181,6 +181,7 @@ namespace vk
switch (status) switch (status)
{ {
case VK_NOT_READY: case VK_NOT_READY:
utils::pause();
continue; continue;
default: default:
die_with_error(status); die_with_error(status);

View file

@ -26,6 +26,13 @@ namespace vk
u64 last_label_submit_event = 0; u64 last_label_submit_event = 0;
u64 commands_complete_event = 0; u64 commands_complete_event = 0;
u64 last_label_request_timestamp = 0; u64 last_label_request_timestamp = 0;
inline u64 inc_counter() volatile
{
// Workaround for volatile increment warning. GPU can see this value directly, but currently we do not modify it on the device.
event_counter = event_counter + 1;
return event_counter;
}
}; };
struct fence struct fence