vector<GPUCounter> D3D11DebugManager::EnumerateCounters() { vector<GPUCounter> ret; ret.push_back(GPUCounter::EventGPUDuration); ret.push_back(GPUCounter::InputVerticesRead); ret.push_back(GPUCounter::IAPrimitives); ret.push_back(GPUCounter::GSPrimitives); ret.push_back(GPUCounter::RasterizerInvocations); ret.push_back(GPUCounter::RasterizedPrimitives); ret.push_back(GPUCounter::SamplesWritten); ret.push_back(GPUCounter::VSInvocations); ret.push_back(GPUCounter::HSInvocations); ret.push_back(GPUCounter::DSInvocations); ret.push_back(GPUCounter::GSInvocations); ret.push_back(GPUCounter::PSInvocations); ret.push_back(GPUCounter::CSInvocations); if(m_pAMDCounters) { for(uint32_t i = 0; i < m_pAMDCounters->GetNumCounters(); i++) { ret.push_back(MakeAMDCounter(i)); } } return ret; }
std::map<uint32_t, CounterDescription> AMDCounters::EnumerateCounters() { std::map<uint32_t, CounterDescription> counters; gpa_uint32 num; GPA_Status status = m_pGPUPerfAPI->GPA_GetNumCounters(&num); if(AMD_FAILED(status)) { GPA_ERROR("Get number of counters", status); return counters; } for(uint32_t i = 0; i < num; ++i) { GPA_Usage_Type usageType; status = m_pGPUPerfAPI->GPA_GetCounterUsageType(i, &usageType); if(AMD_FAILED(status)) { GPA_ERROR("Get counter usage type.", status); return counters; } // Ignore percentage counters due to aggregate roll-up support if(usageType == GPA_USAGE_TYPE_PERCENTAGE) { continue; } CounterDescription desc = InternalGetCounterDescription(i); desc.counter = MakeAMDCounter(i); counters[i] = desc; m_PublicToInternalCounter[desc.counter] = i; } return counters; }