mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-15 22:21:25 +00:00
vk: Initialize queries before use
- The spec does not guarantee that queries are initialized. In fact, it now says all queries must be reset before they are used for the first time.
This commit is contained in:
parent
8ea9bc9874
commit
5968427a2f
@ -528,6 +528,8 @@ VKGSRender::VKGSRender() : GSRender()
|
||||
m_ui_renderer = std::make_unique<vk::ui_overlay_renderer>();
|
||||
m_ui_renderer->create(*m_current_command_buffer, m_texture_upload_buffer_ring_info);
|
||||
|
||||
m_occlusion_query_pool.initialize(*m_current_command_buffer);
|
||||
|
||||
backend_config.supports_multidraw = true;
|
||||
|
||||
// NOTE: We do not actually need multiple sample support for A2C to work
|
||||
|
@ -2912,12 +2912,8 @@ public:
|
||||
CHECK_RESULT(vkCreateQueryPool(dev, &info, nullptr, &query_pool));
|
||||
owner = &dev;
|
||||
|
||||
query_active_status.resize(num_entries, false);
|
||||
|
||||
for (u32 n = 0; n < num_entries; ++n)
|
||||
{
|
||||
available_slots.push(n);
|
||||
}
|
||||
// From spec: "After query pool creation, each query must be reset before it is used."
|
||||
query_active_status.resize(num_entries, true);
|
||||
}
|
||||
|
||||
void destroy()
|
||||
@ -2931,6 +2927,19 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void initialize(vk::command_buffer &cmd)
|
||||
{
|
||||
const u32 count = (u32)query_active_status.size();
|
||||
vkCmdResetQueryPool(cmd, query_pool, 0, count);
|
||||
|
||||
std::fill(query_active_status.begin(), query_active_status.end(), false);
|
||||
|
||||
for (u32 n = 0; n < count; ++n)
|
||||
{
|
||||
available_slots.push(n);
|
||||
}
|
||||
}
|
||||
|
||||
void begin_query(vk::command_buffer &cmd, u32 index)
|
||||
{
|
||||
if (query_active_status[index])
|
||||
|
Loading…
x
Reference in New Issue
Block a user