rsx: Take empty queries into account for engines that spam report reads.

- Some games will spam the report queue with requests but have zpass
statistics enabled.
This commit is contained in:
kd-11 2019-11-04 13:52:26 +03:00 committed by kd-11
parent 2a8f2c64d2
commit 57d3c9e171
1 changed files with 21 additions and 4 deletions

View File

@ -3216,19 +3216,36 @@ namespace rsx
const auto memory_end = memory_address + memory_range; const auto memory_end = memory_address + memory_range;
u32 sync_address = 0; u32 sync_address = 0;
occlusion_query_info* query; occlusion_query_info* query = nullptr;
for (auto It = m_pending_writes.crbegin(); It != m_pending_writes.crend(); ++It) for (auto It = m_pending_writes.crbegin(); It != m_pending_writes.crend(); ++It)
{ {
if (It->sink >= memory_address && It->sink < memory_end) if (sync_address)
{
if (It->query)
{ {
sync_address = It->sink; sync_address = It->sink;
query = It->query; query = It->query;
break; break;
} }
continue;
} }
if (!sync_address) if (It->sink >= memory_address && It->sink < memory_end)
{
sync_address = It->sink;
// NOTE: If application is spamming requests, there may be no query attached
if (It->query)
{
query = It->query;
break;
}
}
}
if (!sync_address || !query)
return result_none; return result_none;
if (!(flags & sync_defer_copy)) if (!(flags & sync_defer_copy))