Follow-up commit to b7f893b5 with minor fixes/tweaks

* Moved the AMD project under an IHV folder
* Moved the AMD headers from the D3D11 project to the AMD project, and
  added the GPUPerfAPI headers there too.
* Set the counterID inside the CounterDescription for AMD counters
* Add an extra search path for the GPUPerfAPI dlls, which will be inside
  distributed builds soon.
This commit is contained in:
baldurk
2017-06-15 14:59:16 +01:00
parent b7f893b559
commit 0516016070
9 changed files with 130 additions and 32 deletions
+4 -1
View File
@@ -75,6 +75,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "d3d9", "renderdoc\driver\d3
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AMD", "renderdoc\driver\ihv\amd\AMD.vcxproj", "{5DE5A561-548A-4DD7-90F0-06A2B39EAE9A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IHV", "IHV", "{4DA2F3E3-9A65-45DD-A69B-82C7757D4904}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Development|x64 = Development|x64
@@ -245,6 +247,7 @@ Global
{88C5DAC6-30A0-4CFD-AF51-540A977D1F3F} = {864A44B0-5612-451A-857F-41E3EF785EF6}
{9E6B10A2-84B4-434D-ABDB-43BE4EA650F4} = {864A44B0-5612-451A-857F-41E3EF785EF6}
{44044776-9469-4079-B587-ABFFF6574AA4} = {864A44B0-5612-451A-857F-41E3EF785EF6}
{5DE5A561-548A-4DD7-90F0-06A2B39EAE9A} = {864A44B0-5612-451A-857F-41E3EF785EF6}
{5DE5A561-548A-4DD7-90F0-06A2B39EAE9A} = {4DA2F3E3-9A65-45DD-A69B-82C7757D4904}
{4DA2F3E3-9A65-45DD-A69B-82C7757D4904} = {864A44B0-5612-451A-857F-41E3EF785EF6}
EndGlobalSection
EndGlobal
+37
View File
@@ -2899,12 +2899,49 @@ enum class GPUCounter : uint32_t
FirstAMD = 1000000,
FirstIntel = 2000000,
LastAMD = FirstIntel - 1,
FirstNvidia = 3000000,
LastIntel = FirstNvidia - 1,
LastNvidia = 4000000,
};
ITERABLE_OPERATORS(GPUCounter);
DOCUMENT(R"(Check whether or not this is an AMD private counter.
:param GPUCounter c: The counter.
:return: ``True`` if it is an AMD private counter, ``False`` if it's not.
:rtype: bool
)");
inline constexpr bool IsAMDCounter(GPUCounter c)
{
return c >= GPUCounter::FirstAMD && c <= GPUCounter::LastAMD;
}
DOCUMENT(R"(Check whether or not this is an Intel private counter.
:param GPUCounter c: The counter.
:return: ``True`` if it is an Intel private counter, ``False`` if it's not.
:rtype: bool
)");
inline constexpr bool IsIntelCounter(GPUCounter c)
{
return c >= GPUCounter::FirstIntel && c <= GPUCounter::LastIntel;
}
DOCUMENT(R"(Check whether or not this is an Nvidia private counter.
:param GPUCounter c: The counter.
:return: ``True`` if it is an Nvidia private counter, ``False`` if it's not.
:rtype: bool
)");
inline constexpr bool IsNvidiaCounter(GPUCounter c)
{
return c >= GPUCounter::FirstNvidia && c <= GPUCounter::LastNvidia;
}
DOCUMENT(R"(The unit that GPU counter data is returned in.
.. data:: Absolute
+1 -1
View File
@@ -68,7 +68,7 @@ vector<GPUCounter> D3D11DebugManager::EnumerateCounters()
{
for(uint32_t i = 0; i < m_pAMDCounters->GetNumCounters(); i++)
{
ret.push_back(static_cast<GPUCounter>(static_cast<uint32_t>(GPUCounter::FirstAMD) + i));
ret.push_back(MakeAMDCounter(i));
}
}
@@ -122,9 +122,6 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\dx\official\amd\AmdDxExt.h" />
<ClInclude Include="..\dx\official\amd\AmdDxExtApi.h" />
<ClInclude Include="..\dx\official\amd\AmdDxExtIface.h" />
<ClInclude Include="d3d11_common.h" />
<ClInclude Include="d3d11_context.h" />
<ClInclude Include="d3d11_debug.h" />
@@ -19,9 +19,6 @@
<Filter Include="official">
<UniqueIdentifier>{069c5202-e850-427b-9353-250795a60436}</UniqueIdentifier>
</Filter>
<Filter Include="official\amd">
<UniqueIdentifier>{b92bf274-f255-4c2f-bc1f-dbd1807643a5}</UniqueIdentifier>
</Filter>
<Filter Include="PCH">
<UniqueIdentifier>{7b0b6261-46cb-4feb-8958-8252d6349ae4}</UniqueIdentifier>
</Filter>
@@ -137,15 +134,6 @@
<ClInclude Include="..\dx\official\d3dcompiler.h">
<Filter>official</Filter>
</ClInclude>
<ClInclude Include="..\dx\official\amd\AmdDxExtIface.h">
<Filter>official\amd</Filter>
</ClInclude>
<ClInclude Include="..\dx\official\amd\AmdDxExt.h">
<Filter>official\amd</Filter>
</ClInclude>
<ClInclude Include="..\dx\official\amd\AmdDxExtApi.h">
<Filter>official\amd</Filter>
</ClInclude>
<ClInclude Include="precompiled.h">
<Filter>PCH</Filter>
</ClInclude>
+16 -1
View File
@@ -47,7 +47,7 @@
<PropertyGroup>
<IntDir>$(SolutionDir)$(Platform)\$(Configuration)\obj\$(ProjectName)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
<ClCompile>
<PreprocessorDefinitions>WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
@@ -97,6 +97,21 @@
</ItemGroup>
<ItemGroup>
<ClInclude Include="amd_counters.h" />
<ClInclude Include="official\DXExt\AmdDxExt.h" />
<ClInclude Include="official\DXExt\AmdDxExtApi.h" />
<ClInclude Include="official\DXExt\AmdDxExtIface.h" />
<ClInclude Include="official\GPUPerfAPI\Include\GPACounterGenerator.h" />
<ClInclude Include="official\GPUPerfAPI\Include\GPAFunctions.h" />
<ClInclude Include="official\GPUPerfAPI\Include\GPAICounterAccessor.h" />
<ClInclude Include="official\GPUPerfAPI\Include\GPAICounterScheduler.h" />
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPI-HSA.h" />
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPI-Private.h" />
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPI.h" />
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPICounters.h" />
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPIFunctionTypes-Private.h" />
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPIFunctionTypes.h" />
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPITypes-Private.h" />
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPITypes.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
+56 -11
View File
@@ -1,27 +1,72 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
<Filter Include="Counters">
<UniqueIdentifier>{db3f483b-32db-4d57-bf48-4f0ef2322be0}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
<Filter Include="official">
<UniqueIdentifier>{345b73a2-79ed-4c89-8f45-b8aa2d211a7f}</UniqueIdentifier>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
<Filter Include="official\GPUPerfAPI">
<UniqueIdentifier>{ef917fc9-3eef-4565-9fbe-e1d3e02460e6}</UniqueIdentifier>
</Filter>
<Filter Include="official\DXExt">
<UniqueIdentifier>{310145c9-318c-4c14-ac19-1bb04a050349}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="amd_counters.cpp">
<Filter>Source Files</Filter>
<Filter>Counters</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="amd_counters.h">
<Filter>Header Files</Filter>
<Filter>Counters</Filter>
</ClInclude>
<ClInclude Include="official\DXExt\AmdDxExt.h">
<Filter>official\DXExt</Filter>
</ClInclude>
<ClInclude Include="official\DXExt\AmdDxExtApi.h">
<Filter>official\DXExt</Filter>
</ClInclude>
<ClInclude Include="official\DXExt\AmdDxExtIface.h">
<Filter>official\DXExt</Filter>
</ClInclude>
<ClInclude Include="official\GPUPerfAPI\Include\GPACounterGenerator.h">
<Filter>official\GPUPerfAPI</Filter>
</ClInclude>
<ClInclude Include="official\GPUPerfAPI\Include\GPAFunctions.h">
<Filter>official\GPUPerfAPI</Filter>
</ClInclude>
<ClInclude Include="official\GPUPerfAPI\Include\GPAICounterAccessor.h">
<Filter>official\GPUPerfAPI</Filter>
</ClInclude>
<ClInclude Include="official\GPUPerfAPI\Include\GPAICounterScheduler.h">
<Filter>official\GPUPerfAPI</Filter>
</ClInclude>
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPI.h">
<Filter>official\GPUPerfAPI</Filter>
</ClInclude>
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPICounters.h">
<Filter>official\GPUPerfAPI</Filter>
</ClInclude>
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPIFunctionTypes.h">
<Filter>official\GPUPerfAPI</Filter>
</ClInclude>
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPIFunctionTypes-Private.h">
<Filter>official\GPUPerfAPI</Filter>
</ClInclude>
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPI-HSA.h">
<Filter>official\GPUPerfAPI</Filter>
</ClInclude>
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPI-Private.h">
<Filter>official\GPUPerfAPI</Filter>
</ClInclude>
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPITypes.h">
<Filter>official\GPUPerfAPI</Filter>
</ClInclude>
<ClInclude Include="official\GPUPerfAPI\Include\GPUPerfAPITypes-Private.h">
<Filter>official\GPUPerfAPI</Filter>
</ClInclude>
</ItemGroup>
</Project>
+11 -3
View File
@@ -105,11 +105,18 @@ AMDCounters::AMDCounters() : m_pGPUPerfAPI(NULL)
bool AMDCounters::Init(void *pContext)
{
HMODULE module = LoadLibraryA("GPUPerfAPIDX11-x64.dll");
// first try in the location it will be in distributed builds
HMODULE module = LoadLibraryA("plugins/amd/counters/GPUPerfAPIDX11-x64.dll");
if(module == 0)
// if that failed then try checking for it just in the default search path
if(module == NULL)
{
RDCERR(
module = LoadLibraryA("GPUPerfAPIDX11-x64.dll");
}
if(module == NULL)
{
RDCWARN(
"AMD GPU performance counters could not be initialized successfully. "
"Are you missing the DLLs?");
@@ -218,6 +225,7 @@ vector<AMDCounters::InternalCounterDescription> AMDCounters::EnumerateCounters()
}
internalDesc.internalIndex = i;
internalDesc.desc.counterID = MakeAMDCounter(i);
counters.push_back(internalDesc);
}
+5
View File
@@ -29,6 +29,11 @@
class GPUPerfAPI;
inline constexpr GPUCounter MakeAMDCounter(int index)
{
return GPUCounter((int)GPUCounter::FirstAMD + index);
}
class AMDCounters
{
public: