From f32262ad24ac1cffba07f38974cb776d03863fdd Mon Sep 17 00:00:00 2001 From: Andreas Hollandt Date: Sat, 29 Aug 2020 21:25:41 +0200 Subject: [PATCH] support Intel performance counters on Windows --- renderdoc/driver/gl/gl_replay.cpp | 7 ++++++- renderdoc/driver/ihv/intel/intel_gl_counters.cpp | 7 +++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/renderdoc/driver/gl/gl_replay.cpp b/renderdoc/driver/gl/gl_replay.cpp index c72aaafcf..215d4037b 100644 --- a/renderdoc/driver/gl/gl_replay.cpp +++ b/renderdoc/driver/gl/gl_replay.cpp @@ -281,7 +281,12 @@ void GLReplay::SetReplayData(GLWindowingData data) } else { - if(m_DriverInfo.vendor == GPUVendor::AMD) + if(m_DriverInfo.vendor == GPUVendor::Intel) + { + RDCLOG("Intel GPU detected - trying to initialise Intel GL counters"); + countersIntel = new IntelGlCounters(); + } + else if(m_DriverInfo.vendor == GPUVendor::AMD) { RDCLOG("AMD GPU detected - trying to initialise AMD counters"); countersAMD = new AMDCounters(); diff --git a/renderdoc/driver/ihv/intel/intel_gl_counters.cpp b/renderdoc/driver/ihv/intel/intel_gl_counters.cpp index e1ce3dc97..82f684ab1 100644 --- a/renderdoc/driver/ihv/intel/intel_gl_counters.cpp +++ b/renderdoc/driver/ihv/intel/intel_gl_counters.cpp @@ -88,10 +88,11 @@ void IntelGlCounters::addCounter(const IntelGlQuery &query, GLuint counterId) GL.glGetIntegerv(eGL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL, &len); counter.desc.description.resize(len); + GLuint64 rawCounterMaxValue = 0; GL.glGetPerfCounterInfoINTEL( query.queryId, counterId, (GLuint)counter.desc.name.size(), &counter.desc.name[0], (GLuint)counter.desc.description.size(), &counter.desc.description[0], &counter.offset, - &counter.desc.resultByteWidth, &counter.type, &counter.dataType, NULL); + &counter.desc.resultByteWidth, &counter.type, &counter.dataType, &rawCounterMaxValue); counter.desc.name.resize(strlen(&counter.desc.name[0])); counter.desc.description.resize(strlen(&counter.desc.description[0])); @@ -116,8 +117,10 @@ void IntelGlCounters::addQuery(GLuint queryId) GL.glGetIntegerv(eGL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL, &len); query.name.resize(len); GLuint nCounters = 0; + GLuint nInstances = 0; + GLuint capsMask = 0; GL.glGetPerfQueryInfoINTEL(queryId, (GLuint)query.name.size(), &query.name[0], &query.size, - &nCounters, NULL, NULL); + &nCounters, &nInstances, &capsMask); // Some drivers raise an error when we query some of its IDs because those // are used to plumb external library with raw counter data. if(GL.glGetError() != eGL_NONE)