void PerfQuery::EnableQuery(PerfQueryGroup type) { if (!ShouldEmulate()) return; // Is this sane? if (m_query_count > ArraySize(m_query_buffer) / 2) WeakFlush(); if (ArraySize(m_query_buffer) == m_query_count) { // TODO FlushOne(); ERROR_LOG(VIDEO, "Flushed query buffer early!"); } // start query if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) { auto& entry = m_query_buffer[(m_query_read_pos + m_query_count) % ArraySize(m_query_buffer)]; D3D::context->Begin(entry.query); entry.query_type = type; ++m_query_count; } }
void PerfQuery::EnableQuery(PerfQueryGroup type) { if (!ShouldEmulate()) return; // Is this sane? if (m_query_count > ArraySize(m_query_buffer) / 2) WeakFlush(); if (ArraySize(m_query_buffer) == m_query_count) { FlushOne(); //ERROR_LOG(VIDEO, "Flushed query buffer early!"); } // start query if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) { auto& entry = m_query_buffer[(m_query_read_pos + m_query_count) % ArraySize(m_query_buffer)]; glBeginQuery(GL_SAMPLES_PASSED, entry.query_id); entry.query_type = type; ++m_query_count; } }
void PerfQuery::EnableQuery(PerfQueryGroup type) { if (m_query_count > m_query_buffer.size() / 2) WeakFlush(); // all queries already used? if (m_query_buffer.size() == m_query_count) { FlushOne(); // WARN_LOG(VIDEO, "Flushed query buffer early!"); } if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) { size_t index = (m_query_read_pos + m_query_count) % m_query_buffer.size(); auto& entry = m_query_buffer[index]; D3D::current_command_list->BeginQuery(m_query_heap, D3D12_QUERY_TYPE_OCCLUSION, static_cast<UINT>(index)); entry.query_type = type; entry.fence_value = -1; ++m_query_count; } }
void PerfQueryGL::EnableQuery(PerfQueryGroup type) { // Is this sane? if (m_query_count > m_query_buffer.size() / 2) WeakFlush(); if (m_query_buffer.size() == m_query_count) { FlushOne(); //ERROR_LOG(VIDEO, "Flushed query buffer early!"); } // start query if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) { auto& entry = m_query_buffer[(m_query_read_pos + m_query_count) % m_query_buffer.size()]; glBeginQuery(m_query_type, entry.query_id); entry.query_type = type; ++m_query_count; } }
void PerfQuery::EnableQuery(PerfQueryGroup type) { // Is this sane? if (m_query_count > m_query_buffer.size() / 2) WeakFlush(); if (m_query_buffer.size() == m_query_count) { FlushOne(); //ERROR_LOG(VIDEO, "Flushed query buffer early!"); } // start query if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) { auto& entry = m_query_buffer[(m_query_read_pos + m_query_count) % m_query_buffer.size()]; glBeginQuery(GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGL ? GL_SAMPLES_PASSED : GL_ANY_SAMPLES_PASSED, entry.query_id); entry.query_type = type; ++m_query_count; } }