Ejemplo n.º 1
0
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;
	}
}
Ejemplo n.º 2
0
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;
    }
}
Ejemplo n.º 3
0
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;
  }
}
Ejemplo n.º 4
0
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;
	}
}
Ejemplo n.º 5
0
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;
	}
}