Clean out the long since bit-rotted video profiling code.
Profiler.{cpp,h} also happened to be the only dupliated filenames left in Source, the absence of which should make link-time optimization easier to get working. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6935 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
0b90f72073
commit
955e3abe9e
|
@ -131,7 +131,7 @@
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\Common\Src;..\Core\Src;..\DebuggerWX\Src;..\DebuggerUICommon\Src;..\InputCommon\Src;..\InputUICommon\Src;..\DiscIO\Src;..\..\PluginSpecs;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\Common\Src;..\Core\Src;..\DebuggerWX\Src;..\DebuggerUICommon\Src;..\InputCommon\Src;..\DiscIO\Src;..\..\PluginSpecs;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<ForcedIncludeFiles>stdafx.h</ForcedIncludeFiles>
|
<ForcedIncludeFiles>stdafx.h</ForcedIncludeFiles>
|
||||||
|
@ -157,7 +157,7 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e /
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\Common\Src;..\Core\Src;..\DebuggerWX\Src;..\DebuggerUICommon\Src;..\InputCommon\Src;..\InputUICommon\Src;..\DiscIO\Src;..\..\PluginSpecs;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\Common\Src;..\Core\Src;..\DebuggerWX\Src;..\DebuggerUICommon\Src;..\InputCommon\Src;..\DiscIO\Src;..\..\PluginSpecs;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<ForcedIncludeFiles>stdafx.h</ForcedIncludeFiles>
|
<ForcedIncludeFiles>stdafx.h</ForcedIncludeFiles>
|
||||||
|
@ -185,7 +185,7 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e /
|
||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<AdditionalIncludeDirectories>..\Common\Src;..\Core\Src;..\DebuggerWX\Src;..\DebuggerUICommon\Src;..\InputCommon\Src;..\InputUICommon\Src;..\DiscIO\Src;..\..\PluginSpecs;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\Common\Src;..\Core\Src;..\DebuggerWX\Src;..\DebuggerUICommon\Src;..\InputCommon\Src;..\DiscIO\Src;..\..\PluginSpecs;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<ForcedIncludeFiles>stdafx.h</ForcedIncludeFiles>
|
<ForcedIncludeFiles>stdafx.h</ForcedIncludeFiles>
|
||||||
|
@ -245,7 +245,7 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e /
|
||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<AdditionalIncludeDirectories>..\Common\Src;..\Core\Src;..\DebuggerWX\Src;..\DebuggerUICommon\Src;..\InputCommon\Src;..\InputUICommon\Src;..\DiscIO\Src;..\..\PluginSpecs;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\Common\Src;..\Core\Src;..\DebuggerWX\Src;..\DebuggerUICommon\Src;..\InputCommon\Src;..\DiscIO\Src;..\..\PluginSpecs;..\..\..\Externals\SFML\include;..\..\..\Externals\wxWidgets\include;..\..\..\Externals\CLRun\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<ForcedIncludeFiles>stdafx.h</ForcedIncludeFiles>
|
<ForcedIncludeFiles>stdafx.h</ForcedIncludeFiles>
|
||||||
|
@ -434,4 +434,4 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e /
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include "VideoConfig.h"
|
#include "VideoConfig.h"
|
||||||
#include "Profiler.h"
|
|
||||||
#include "Statistics.h"
|
#include "Statistics.h"
|
||||||
#include "RenderBase.h"
|
#include "RenderBase.h"
|
||||||
#include "VideoCommon.h"
|
#include "VideoCommon.h"
|
||||||
|
@ -230,7 +229,6 @@ void BPWritten(const BPCmd& bp)
|
||||||
// It can also optionally clear the EFB while copying from it. To emulate this, we of course copy first and clear afterwards.
|
// It can also optionally clear the EFB while copying from it. To emulate this, we of course copy first and clear afterwards.
|
||||||
case BPMEM_TRIGGER_EFB_COPY: // Copy EFB Region or Render to the XFB or Clear the screen.
|
case BPMEM_TRIGGER_EFB_COPY: // Copy EFB Region or Render to the XFB or Clear the screen.
|
||||||
{
|
{
|
||||||
DVSTARTSUBPROFILE("LoadBPReg:swap");
|
|
||||||
// The bottom right is within the rectangle
|
// The bottom right is within the rectangle
|
||||||
// The values in bpmem.copyTexSrcXY and bpmem.copyTexSrcWH are updated in case 0x49 and 0x4a in this function
|
// The values in bpmem.copyTexSrcXY and bpmem.copyTexSrcWH are updated in case 0x49 and 0x4a in this function
|
||||||
|
|
||||||
|
@ -296,8 +294,6 @@ void BPWritten(const BPCmd& bp)
|
||||||
break;
|
break;
|
||||||
case BPMEM_LOADTLUT1: // Load a Texture Look Up Table
|
case BPMEM_LOADTLUT1: // Load a Texture Look Up Table
|
||||||
{
|
{
|
||||||
DVSTARTSUBPROFILE("LoadBPReg:GXLoadTlut");
|
|
||||||
|
|
||||||
u32 tlutTMemAddr = (bp.newvalue & 0x3FF) << 9;
|
u32 tlutTMemAddr = (bp.newvalue & 0x3FF) << 9;
|
||||||
u32 tlutXferCount = (bp.newvalue & 0x1FFC00) >> 5;
|
u32 tlutXferCount = (bp.newvalue & 0x1FFC00) >> 5;
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "VideoCommon.h"
|
#include "VideoCommon.h"
|
||||||
#include "Profiler.h"
|
|
||||||
#include "OpcodeDecoding.h"
|
#include "OpcodeDecoding.h"
|
||||||
#include "CommandProcessor.h"
|
#include "CommandProcessor.h"
|
||||||
#include "CPUDetect.h"
|
#include "CPUDetect.h"
|
||||||
|
@ -446,7 +445,6 @@ void OpcodeDecoder_Shutdown()
|
||||||
|
|
||||||
void OpcodeDecoder_Run(bool skipped_frame)
|
void OpcodeDecoder_Run(bool skipped_frame)
|
||||||
{
|
{
|
||||||
DVSTARTPROFILE();
|
|
||||||
if (!skipped_frame)
|
if (!skipped_frame)
|
||||||
{
|
{
|
||||||
while (FifoCommandRunnable())
|
while (FifoCommandRunnable())
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
|
|
||||||
#include "Profiler.h"
|
|
||||||
#include "PixelShaderGen.h"
|
#include "PixelShaderGen.h"
|
||||||
#include "XFMemory.h" // for texture projection mode
|
#include "XFMemory.h" // for texture projection mode
|
||||||
#include "BPMemory.h"
|
#include "BPMemory.h"
|
||||||
|
@ -446,7 +445,6 @@ const char *GeneratePixelShaderCode(DSTALPHA_MODE dstAlphaMode, API_TYPE ApiType
|
||||||
{
|
{
|
||||||
setlocale(LC_NUMERIC, "C"); // Reset locale for compilation
|
setlocale(LC_NUMERIC, "C"); // Reset locale for compilation
|
||||||
text[sizeof(text) - 1] = 0x7C; // canary
|
text[sizeof(text) - 1] = 0x7C; // canary
|
||||||
DVSTARTPROFILE();
|
|
||||||
|
|
||||||
BuildSwapModeTable();
|
BuildSwapModeTable();
|
||||||
int numStages = bpmem.genMode.numtevstages + 1;
|
int numStages = bpmem.genMode.numtevstages + 1;
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "Profiler.h"
|
|
||||||
#include "Statistics.h"
|
#include "Statistics.h"
|
||||||
#include "PixelShaderManager.h"
|
#include "PixelShaderManager.h"
|
||||||
#include "VideoCommon.h"
|
#include "VideoCommon.h"
|
||||||
|
|
|
@ -1,298 +0,0 @@
|
||||||
// Copyright (C) 2003 Dolphin Project.
|
|
||||||
|
|
||||||
// This program is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation, version 2.0.
|
|
||||||
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU General Public License 2.0 for more details.
|
|
||||||
|
|
||||||
// A copy of the GPL 2.0 should have been included with the program.
|
|
||||||
// If not, see http://www.gnu.org/licenses/
|
|
||||||
|
|
||||||
// Official SVN repository and contact information can be found at
|
|
||||||
// http://code.google.com/p/dolphin-emu/
|
|
||||||
|
|
||||||
// Simple profiler
|
|
||||||
|
|
||||||
#include "Common.h"
|
|
||||||
#include "Profiler.h"
|
|
||||||
|
|
||||||
#include <list>
|
|
||||||
#include <string>
|
|
||||||
#include <map>
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
|
|
||||||
#if defined (_MSC_VER) && _MSC_VER >= 1400
|
|
||||||
#define _interlockedbittestandset workaround_ms_header_bug_platform_sdk6_set
|
|
||||||
#define _interlockedbittestandreset workaround_ms_header_bug_platform_sdk6_reset
|
|
||||||
#define _interlockedbittestandset64 workaround_ms_header_bug_platform_sdk6_set64
|
|
||||||
#define _interlockedbittestandreset64 workaround_ms_header_bug_platform_sdk6_reset64
|
|
||||||
#include <intrin.h>
|
|
||||||
#undef _interlockedbittestandset
|
|
||||||
#undef _interlockedbittestandreset
|
|
||||||
#undef _interlockedbittestandset64
|
|
||||||
#undef _interlockedbittestandreset64
|
|
||||||
#pragma intrinsic(__rdtsc)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Globals
|
|
||||||
static u64 luPerfFreq = 0;
|
|
||||||
#ifdef DVPROFILE
|
|
||||||
int g_bWriteProfile = 1;
|
|
||||||
#else
|
|
||||||
int g_bWriteProfile = 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
inline u64 GET_PROFILE_TIME()
|
|
||||||
{
|
|
||||||
#if defined (_MSC_VER) && _MSC_VER >= 1400
|
|
||||||
return __rdtsc();
|
|
||||||
#else
|
|
||||||
LARGE_INTEGER lu;
|
|
||||||
QueryPerformanceCounter(&lu);
|
|
||||||
return lu.QuadPart;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
static u64 luPerfFreq = 1000000;
|
|
||||||
#define GET_PROFILE_TIME() //GetCpuTick()
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct DVPROFSTRUCT;
|
|
||||||
|
|
||||||
struct DVPROFSTRUCT
|
|
||||||
{
|
|
||||||
struct DATA
|
|
||||||
{
|
|
||||||
DATA(u64 time, u32 user = 0) : dwTime(time), dwUserData(user) {}
|
|
||||||
DATA() : dwTime(0), dwUserData(0) {}
|
|
||||||
|
|
||||||
u64 dwTime;
|
|
||||||
u32 dwUserData;
|
|
||||||
};
|
|
||||||
|
|
||||||
~DVPROFSTRUCT() {
|
|
||||||
std::list<DVPROFSTRUCT *>::iterator it = listpChild.begin();
|
|
||||||
while (it != listpChild.end())
|
|
||||||
{
|
|
||||||
delete *it;
|
|
||||||
*it = NULL;
|
|
||||||
++it;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// before DVProfEnd is called, contains the global time it started
|
|
||||||
// after DVProfEnd is called, contains the time it lasted
|
|
||||||
// the list contains all the tracked times
|
|
||||||
std::list<DATA> listTimes;
|
|
||||||
|
|
||||||
char pname[256];
|
|
||||||
std::list<DVPROFSTRUCT*> listpChild; // other profilers called during this profiler period
|
|
||||||
};
|
|
||||||
|
|
||||||
struct DVPROFTRACK
|
|
||||||
{
|
|
||||||
u32 dwUserData;
|
|
||||||
DVPROFSTRUCT::DATA* pdwTime;
|
|
||||||
DVPROFSTRUCT* pprof;
|
|
||||||
};
|
|
||||||
|
|
||||||
// the current profiling functions, the back element is the
|
|
||||||
// one that will first get popped off the list when DVProfEnd is called
|
|
||||||
// the pointer is an element in DVPROFSTRUCT::listTimes
|
|
||||||
static std::list<DVPROFTRACK> g_listCurTracking;
|
|
||||||
|
|
||||||
// the current profilers, note that these are the parents
|
|
||||||
// any profiler started during the time of another is held in
|
|
||||||
// DVPROFSTRUCT::listpChild
|
|
||||||
static std::list<DVPROFSTRUCT> g_listProfilers;
|
|
||||||
|
|
||||||
// ignores the hierarchy, pointer to elements in g_listProfilers
|
|
||||||
static std::list<DVPROFSTRUCT*> g_listAllProfilers;
|
|
||||||
|
|
||||||
|
|
||||||
void DVProfRegister(const char *pname)
|
|
||||||
{
|
|
||||||
if (!g_bWriteProfile)
|
|
||||||
return;
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
if (luPerfFreq <= 1) {
|
|
||||||
#if defined (_MSC_VER) && _MSC_VER >= 1400
|
|
||||||
luPerfFreq = 1000000;
|
|
||||||
#else
|
|
||||||
LARGE_INTEGER temp;
|
|
||||||
QueryPerformanceFrequency(&temp);
|
|
||||||
luPerfFreq = temp.QuadPart;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
std::list<DVPROFSTRUCT*>::iterator it = g_listAllProfilers.begin();
|
|
||||||
|
|
||||||
// while(it != g_listAllProfilers.end() ) {
|
|
||||||
//
|
|
||||||
// if( _tcscmp(pname, (*it)->pname) == 0 ) {
|
|
||||||
// (*it)->listTimes.push_back(Common::Timer::GetTimeMs());
|
|
||||||
// DVPROFTRACK dvtrack;
|
|
||||||
// dvtrack.pdwTime = &(*it)->listTimes.back();
|
|
||||||
// dvtrack.pprof = *it;
|
|
||||||
// g_listCurTracking.push_back(dvtrack);
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// ++it;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// else add in a new profiler to the appropriate parent profiler
|
|
||||||
DVPROFSTRUCT* pprof = NULL;
|
|
||||||
|
|
||||||
if (g_listCurTracking.size() > 0)
|
|
||||||
{
|
|
||||||
_assert_( g_listCurTracking.back().pprof != NULL );
|
|
||||||
g_listCurTracking.back().pprof->listpChild.push_back(new DVPROFSTRUCT());
|
|
||||||
pprof = g_listCurTracking.back().pprof->listpChild.back();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
g_listProfilers.push_back(DVPROFSTRUCT());
|
|
||||||
pprof = &g_listProfilers.back();
|
|
||||||
}
|
|
||||||
|
|
||||||
strncpy(pprof->pname, pname, 256);
|
|
||||||
|
|
||||||
// setup the profiler for tracking
|
|
||||||
pprof->listTimes.push_back(DVPROFSTRUCT::DATA(GET_PROFILE_TIME()));
|
|
||||||
|
|
||||||
DVPROFTRACK dvtrack;
|
|
||||||
dvtrack.pdwTime = &pprof->listTimes.back();
|
|
||||||
dvtrack.pprof = pprof;
|
|
||||||
dvtrack.dwUserData = 0;
|
|
||||||
|
|
||||||
g_listCurTracking.push_back(dvtrack);
|
|
||||||
|
|
||||||
// add to all profiler list
|
|
||||||
g_listAllProfilers.push_back(pprof);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DVProfEnd(u32 dwUserData)
|
|
||||||
{
|
|
||||||
if (!g_bWriteProfile)
|
|
||||||
return;
|
|
||||||
if (g_listCurTracking.size() == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
DVPROFTRACK dvtrack = g_listCurTracking.back();
|
|
||||||
|
|
||||||
_assert_( dvtrack.pdwTime != NULL && dvtrack.pprof != NULL );
|
|
||||||
|
|
||||||
dvtrack.pdwTime->dwTime = GET_PROFILE_TIME()- dvtrack.pdwTime->dwTime;
|
|
||||||
dvtrack.pdwTime->dwUserData= dwUserData;
|
|
||||||
|
|
||||||
g_listCurTracking.pop_back();
|
|
||||||
}
|
|
||||||
|
|
||||||
struct DVTIMEINFO
|
|
||||||
{
|
|
||||||
DVTIMEINFO() : uInclusive(0), uExclusive(0) {}
|
|
||||||
u64 uInclusive, uExclusive;
|
|
||||||
};
|
|
||||||
|
|
||||||
std::map<std::string, DVTIMEINFO> mapAggregateTimes;
|
|
||||||
|
|
||||||
u64 DVProfWriteStruct(FILE* f, const DVPROFSTRUCT* p, int ident)
|
|
||||||
{
|
|
||||||
fprintf(f, "%*s%s - ", ident, "", p->pname);
|
|
||||||
std::list<DVPROFSTRUCT::DATA>::const_iterator ittime = p->listTimes.begin();
|
|
||||||
u64 utime = 0;
|
|
||||||
|
|
||||||
while (ittime != p->listTimes.end())
|
|
||||||
{
|
|
||||||
utime += ittime->dwTime;
|
|
||||||
if (ittime->dwUserData)
|
|
||||||
fprintf(f, "time: %d, user: 0x%8.8x", (u32)ittime->dwTime, ittime->dwUserData);
|
|
||||||
else
|
|
||||||
fprintf(f, "time: %d", (u32)ittime->dwTime);
|
|
||||||
++ittime;
|
|
||||||
}
|
|
||||||
|
|
||||||
// yes this is necessary, maps have problems with constructors on their type
|
|
||||||
std::map<std::string, DVTIMEINFO>::iterator ittimes = mapAggregateTimes.find(p->pname);
|
|
||||||
if (ittimes == mapAggregateTimes.end())
|
|
||||||
{
|
|
||||||
ittimes = mapAggregateTimes.insert(std::map<std::string, DVTIMEINFO>::value_type(p->pname, DVTIMEINFO())).first;
|
|
||||||
ittimes->second.uExclusive = 0;
|
|
||||||
ittimes->second.uInclusive = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ittimes->second.uInclusive += utime;
|
|
||||||
|
|
||||||
fprintf(f, "\n");
|
|
||||||
|
|
||||||
std::list<DVPROFSTRUCT*>::const_iterator itprof = p->listpChild.begin();
|
|
||||||
|
|
||||||
u64 uex = utime;
|
|
||||||
while (itprof != p->listpChild.end())
|
|
||||||
{
|
|
||||||
uex -= DVProfWriteStruct(f, *itprof, ident+4);
|
|
||||||
++itprof;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (uex > utime)
|
|
||||||
uex = 0;
|
|
||||||
|
|
||||||
ittimes->second.uExclusive += uex;
|
|
||||||
return utime;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DVProfWrite(const char* pfilename, u32 frames)
|
|
||||||
{
|
|
||||||
_assert_( pfilename != NULL );
|
|
||||||
FILE* f = fopen(pfilename, "w");
|
|
||||||
|
|
||||||
// pop back any unused
|
|
||||||
mapAggregateTimes.clear();
|
|
||||||
std::list<DVPROFSTRUCT>::iterator it = g_listProfilers.begin();
|
|
||||||
|
|
||||||
while (it != g_listProfilers.end() )
|
|
||||||
{
|
|
||||||
DVProfWriteStruct(f, &(*it), 0);
|
|
||||||
++it;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::map<std::string, DVTIMEINFO>::const_iterator iter;
|
|
||||||
fprintf(f, "\n\n-------------------------------------------------------------------\n\n");
|
|
||||||
|
|
||||||
u64 uTotal[2] = {0};
|
|
||||||
double fiTotalTime[2];
|
|
||||||
|
|
||||||
for (iter = mapAggregateTimes.begin(); iter != mapAggregateTimes.end(); ++iter)
|
|
||||||
{
|
|
||||||
uTotal[0] += iter->second.uExclusive;
|
|
||||||
uTotal[1] += iter->second.uInclusive;
|
|
||||||
}
|
|
||||||
|
|
||||||
fprintf(f, "total times (%d): ex: %llu ", frames, 1000000 * uTotal[0] / (luPerfFreq*(u64)frames));
|
|
||||||
fprintf(f, "inc: %llu\n", 1000000 * uTotal[1]/(luPerfFreq*(u64)frames));
|
|
||||||
|
|
||||||
fiTotalTime[0] = 1.0 / (double)uTotal[0];
|
|
||||||
fiTotalTime[1] = 1.0 / (double)uTotal[1];
|
|
||||||
|
|
||||||
// output the combined times
|
|
||||||
for (iter = mapAggregateTimes.begin(); iter != mapAggregateTimes.end(); ++iter)
|
|
||||||
fprintf(f, "%s - ex: %f inc: %f\n", iter->first.c_str(), (float)((double)iter->second.uExclusive * fiTotalTime[0]),
|
|
||||||
(float)((double)iter->second.uInclusive * fiTotalTime[1]));
|
|
||||||
|
|
||||||
fclose(f);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DVProfClear()
|
|
||||||
{
|
|
||||||
g_listCurTracking.clear();
|
|
||||||
g_listProfilers.clear();
|
|
||||||
g_listAllProfilers.clear();
|
|
||||||
}
|
|
|
@ -1,78 +0,0 @@
|
||||||
// Copyright (C) 2003 Dolphin Project.
|
|
||||||
|
|
||||||
// This program is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation, version 2.0.
|
|
||||||
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU General Public License 2.0 for more details.
|
|
||||||
|
|
||||||
// A copy of the GPL 2.0 should have been included with the program.
|
|
||||||
// If not, see http://www.gnu.org/licenses/
|
|
||||||
|
|
||||||
// Official SVN repository and contact information can be found at
|
|
||||||
// http://code.google.com/p/dolphin-emu/
|
|
||||||
|
|
||||||
|
|
||||||
// Zerofrog's Mini Internal Profiler
|
|
||||||
|
|
||||||
#ifndef _PROFILER_H
|
|
||||||
#define _PROFILER_H
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include "Common.h"
|
|
||||||
|
|
||||||
// #define DVPROFILE // comment out to disable profiling
|
|
||||||
|
|
||||||
extern int g_bWriteProfile; // global variable to enable/disable profiling (if DVPROFILE is defined)
|
|
||||||
|
|
||||||
// IMPORTANT: For every Register there must be an End. Use the below DVProfileFunc utility class for safety.
|
|
||||||
void DVProfRegister(const char* pname); // first checks if this profiler exists in g_listProfilers
|
|
||||||
void DVProfEnd(u32 dwUserData);
|
|
||||||
|
|
||||||
void DVProfWrite(const char* pfilename, u32 frames = 0);
|
|
||||||
void DVProfGenReport(std::string *report);
|
|
||||||
void DVProfClear(); // clears all the profilers
|
|
||||||
|
|
||||||
#if defined(DVPROFILE) && defined(_WIN32)
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
|
|
||||||
#ifndef __PRETTY_FUNCTION__
|
|
||||||
#define __PRETTY_FUNCTION__ __FUNCTION__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define DVSTARTPROFILE() DVProfileFunc _pf(__PRETTY_FUNCTION__);
|
|
||||||
#define DVSTARTSUBPROFILE(name) DVProfileFunc _pf(name);
|
|
||||||
|
|
||||||
class DVProfileFunc
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
u32 dwUserData;
|
|
||||||
DVProfileFunc(const char* pname) { DVProfRegister(pname); dwUserData = 0; }
|
|
||||||
DVProfileFunc(const char* pname, u32 dwUserData) : dwUserData(dwUserData) { DVProfRegister(pname); }
|
|
||||||
~DVProfileFunc() { DVProfEnd(dwUserData); }
|
|
||||||
};
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#define DVSTARTPROFILE()
|
|
||||||
#define DVSTARTSUBPROFILE(name)
|
|
||||||
|
|
||||||
class DVProfileFunc
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
u32 dwUserData;
|
|
||||||
__forceinline DVProfileFunc(const char* pname) {}
|
|
||||||
__forceinline DVProfileFunc(const char* pname, u32 _dwUserData) { }
|
|
||||||
~DVProfileFunc() {}
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // DVPROFILE && WIN32
|
|
||||||
|
|
||||||
#endif // _PROFILER_H
|
|
|
@ -22,7 +22,6 @@ files = [
|
||||||
'PixelEngine.cpp',
|
'PixelEngine.cpp',
|
||||||
'PixelShaderGen.cpp',
|
'PixelShaderGen.cpp',
|
||||||
'PixelShaderManager.cpp',
|
'PixelShaderManager.cpp',
|
||||||
'Profiler.cpp',
|
|
||||||
'RenderBase.cpp',
|
'RenderBase.cpp',
|
||||||
'Statistics.cpp',
|
'Statistics.cpp',
|
||||||
'TextureCacheBase.cpp',
|
'TextureCacheBase.cpp',
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
#include "HiresTextures.h"
|
#include "HiresTextures.h"
|
||||||
#include "RenderBase.h"
|
#include "RenderBase.h"
|
||||||
#include "FileUtil.h"
|
#include "FileUtil.h"
|
||||||
#include "Profiler.h"
|
|
||||||
|
|
||||||
#include "PluginSpecs.h"
|
#include "PluginSpecs.h"
|
||||||
|
|
||||||
|
@ -412,8 +411,6 @@ return_entry:
|
||||||
void TextureCache::CopyRenderTargetToTexture(u32 address, bool bFromZBuffer,
|
void TextureCache::CopyRenderTargetToTexture(u32 address, bool bFromZBuffer,
|
||||||
bool bIsIntensityFmt, u32 copyfmt, bool bScaleByHalf, const EFBRectangle &source_rect)
|
bool bIsIntensityFmt, u32 copyfmt, bool bScaleByHalf, const EFBRectangle &source_rect)
|
||||||
{
|
{
|
||||||
DVSTARTPROFILE();
|
|
||||||
|
|
||||||
float colmat[28] = {0};
|
float colmat[28] = {0};
|
||||||
float *const fConstAdd = colmat + 16;
|
float *const fConstAdd = colmat + 16;
|
||||||
float *const ColorMask = colmat + 20;
|
float *const ColorMask = colmat + 20;
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "VideoCommon.h"
|
#include "VideoCommon.h"
|
||||||
#include "VideoConfig.h"
|
#include "VideoConfig.h"
|
||||||
#include "Profiler.h"
|
|
||||||
#include "MemoryUtil.h"
|
#include "MemoryUtil.h"
|
||||||
#include "StringUtil.h"
|
#include "StringUtil.h"
|
||||||
#include "x64Emitter.h"
|
#include "x64Emitter.h"
|
||||||
|
@ -514,8 +513,6 @@ void VertexLoader::WriteSetVariable(int bits, void *address, OpArg value)
|
||||||
|
|
||||||
void VertexLoader::RunVertices(int vtx_attr_group, int primitive, int count)
|
void VertexLoader::RunVertices(int vtx_attr_group, int primitive, int count)
|
||||||
{
|
{
|
||||||
DVSTARTPROFILE();
|
|
||||||
|
|
||||||
m_numLoadedVertices += count;
|
m_numLoadedVertices += count;
|
||||||
|
|
||||||
// Flush if our vertex format is different from the currently set.
|
// Flush if our vertex format is different from the currently set.
|
||||||
|
@ -658,8 +655,6 @@ void VertexLoader::RunVertices(int vtx_attr_group, int primitive, int count)
|
||||||
|
|
||||||
void VertexLoader::RunCompiledVertices(int vtx_attr_group, int primitive, int count, u8* Data)
|
void VertexLoader::RunCompiledVertices(int vtx_attr_group, int primitive, int count, u8* Data)
|
||||||
{
|
{
|
||||||
DVSTARTPROFILE();
|
|
||||||
|
|
||||||
m_numLoadedVertices += count;
|
m_numLoadedVertices += count;
|
||||||
|
|
||||||
// Flush if our vertex format is different from the currently set.
|
// Flush if our vertex format is different from the currently set.
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
#include "NativeVertexFormat.h"
|
#include "NativeVertexFormat.h"
|
||||||
#include "TextureCacheBase.h"
|
#include "TextureCacheBase.h"
|
||||||
#include "RenderBase.h"
|
#include "RenderBase.h"
|
||||||
#include "Profiler.h"
|
|
||||||
|
|
||||||
#include "VertexManagerBase.h"
|
#include "VertexManagerBase.h"
|
||||||
|
|
||||||
|
@ -201,11 +200,6 @@ void VertexManager::Flush()
|
||||||
bpmem.genMode.numtexgens, (u32)bpmem.dstalpha.enable, (bpmem.alphaFunc.hex>>16)&0xff);
|
bpmem.genMode.numtexgens, (u32)bpmem.dstalpha.enable, (bpmem.alphaFunc.hex>>16)&0xff);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
DVSTARTPROFILE();
|
|
||||||
|
|
||||||
// set the textures
|
|
||||||
DVSTARTSUBPROFILE("VertexManager::Flush:textures");
|
|
||||||
|
|
||||||
u32 usedtextures = 0;
|
u32 usedtextures = 0;
|
||||||
for (u32 i = 0; i < (u32)bpmem.genMode.numtevstages + 1; ++i)
|
for (u32 i = 0; i < (u32)bpmem.genMode.numtevstages + 1; ++i)
|
||||||
if (bpmem.tevorders[i / 2].getEnable(i & 1))
|
if (bpmem.tevorders[i / 2].getEnable(i & 1))
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
|
|
||||||
#include "Profiler.h"
|
|
||||||
#include "NativeVertexFormat.h"
|
#include "NativeVertexFormat.h"
|
||||||
|
|
||||||
#include "BPMemory.h"
|
#include "BPMemory.h"
|
||||||
|
@ -81,7 +80,6 @@ const char *GenerateVertexShaderCode(u32 components, API_TYPE api_type)
|
||||||
{
|
{
|
||||||
setlocale(LC_NUMERIC, "C"); // Reset locale for compilation
|
setlocale(LC_NUMERIC, "C"); // Reset locale for compilation
|
||||||
text[sizeof(text) - 1] = 0x7C; // canary
|
text[sizeof(text) - 1] = 0x7C; // canary
|
||||||
DVSTARTPROFILE();
|
|
||||||
|
|
||||||
_assert_(bpmem.genMode.numtexgens == xfregs.numTexGens);
|
_assert_(bpmem.genMode.numtexgens == xfregs.numTexGens);
|
||||||
_assert_(bpmem.genMode.numcolchans == xfregs.nNumChans);
|
_assert_(bpmem.genMode.numcolchans == xfregs.nNumChans);
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "VideoConfig.h"
|
#include "VideoConfig.h"
|
||||||
#include "MathUtil.h"
|
#include "MathUtil.h"
|
||||||
#include "Profiler.h"
|
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
|
|
|
@ -577,14 +577,6 @@
|
||||||
RelativePath=".\Src\OnScreenDisplay.h"
|
RelativePath=".\Src\OnScreenDisplay.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath=".\Src\Profiler.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath=".\Src\Profiler.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath=".\Src\Statistics.cpp"
|
RelativePath=".\Src\Statistics.cpp"
|
||||||
>
|
>
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
#include "IndexGenerator.h"
|
#include "IndexGenerator.h"
|
||||||
#include "MainBase.h"
|
#include "MainBase.h"
|
||||||
#include "PixelShaderManager.h"
|
#include "PixelShaderManager.h"
|
||||||
#include "Profiler.h"
|
|
||||||
#include "RenderBase.h"
|
#include "RenderBase.h"
|
||||||
#include "Statistics.h"
|
#include "Statistics.h"
|
||||||
#include "TextureCacheBase.h"
|
#include "TextureCacheBase.h"
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
#include "LinearDiskCache.h"
|
#include "LinearDiskCache.h"
|
||||||
|
|
||||||
#include "Debugger.h"
|
#include "Debugger.h"
|
||||||
#include "Profiler.h"
|
|
||||||
#include "Statistics.h"
|
#include "Statistics.h"
|
||||||
#include "VertexShaderGen.h"
|
#include "VertexShaderGen.h"
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
|
|
||||||
#include "D3DBase.h"
|
#include "D3DBase.h"
|
||||||
|
|
||||||
#include "Profiler.h"
|
|
||||||
#include "x64Emitter.h"
|
#include "x64Emitter.h"
|
||||||
#include "ABI.h"
|
#include "ABI.h"
|
||||||
#include "MemoryUtil.h"
|
#include "MemoryUtil.h"
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
#include "D3DBase.h"
|
#include "D3DBase.h"
|
||||||
#include "Fifo.h"
|
#include "Fifo.h"
|
||||||
#include "Statistics.h"
|
#include "Statistics.h"
|
||||||
#include "Profiler.h"
|
|
||||||
#include "VertexManager.h"
|
#include "VertexManager.h"
|
||||||
#include "OpcodeDecoding.h"
|
#include "OpcodeDecoding.h"
|
||||||
#include "IndexGenerator.h"
|
#include "IndexGenerator.h"
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
#include "D3DBase.h"
|
#include "D3DBase.h"
|
||||||
#include "D3DShader.h"
|
#include "D3DShader.h"
|
||||||
#include "Statistics.h"
|
#include "Statistics.h"
|
||||||
#include "Profiler.h"
|
|
||||||
#include "VideoConfig.h"
|
#include "VideoConfig.h"
|
||||||
#include "VertexShaderCache.h"
|
#include "VertexShaderCache.h"
|
||||||
#include "VertexLoader.h"
|
#include "VertexLoader.h"
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
// http://code.google.com/p/dolphin-emu/
|
// http://code.google.com/p/dolphin-emu/
|
||||||
|
|
||||||
#include "GLUtil.h"
|
#include "GLUtil.h"
|
||||||
#include "Profiler.h"
|
|
||||||
#include "x64Emitter.h"
|
#include "x64Emitter.h"
|
||||||
#include "ABI.h"
|
#include "ABI.h"
|
||||||
#include "MemoryUtil.h"
|
#include "MemoryUtil.h"
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
// http://code.google.com/p/dolphin-emu/
|
// http://code.google.com/p/dolphin-emu/
|
||||||
|
|
||||||
#include "Globals.h"
|
#include "Globals.h"
|
||||||
#include "Profiler.h"
|
|
||||||
|
|
||||||
#include "GLUtil.h"
|
#include "GLUtil.h"
|
||||||
|
|
||||||
|
@ -195,7 +194,6 @@ void PixelShaderCache::Shutdown()
|
||||||
|
|
||||||
FRAGMENTSHADER* PixelShaderCache::SetShader(DSTALPHA_MODE dstAlphaMode, u32 components)
|
FRAGMENTSHADER* PixelShaderCache::SetShader(DSTALPHA_MODE dstAlphaMode, u32 components)
|
||||||
{
|
{
|
||||||
DVSTARTPROFILE();
|
|
||||||
PIXELSHADERUID uid;
|
PIXELSHADERUID uid;
|
||||||
GetPixelShaderId(&uid, dstAlphaMode);
|
GetPixelShaderId(&uid, dstAlphaMode);
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
|
|
||||||
#include "CommonPaths.h"
|
#include "CommonPaths.h"
|
||||||
#include "VideoConfig.h"
|
#include "VideoConfig.h"
|
||||||
#include "Profiler.h"
|
|
||||||
#include "Statistics.h"
|
#include "Statistics.h"
|
||||||
#include "ImageWrite.h"
|
#include "ImageWrite.h"
|
||||||
#include "PixelEngine.h"
|
#include "PixelEngine.h"
|
||||||
|
|
|
@ -43,7 +43,6 @@
|
||||||
#include "MemoryUtil.h"
|
#include "MemoryUtil.h"
|
||||||
#include "PixelShaderCache.h"
|
#include "PixelShaderCache.h"
|
||||||
#include "PixelShaderManager.h"
|
#include "PixelShaderManager.h"
|
||||||
#include "Profiler.h"
|
|
||||||
#include "Render.h"
|
#include "Render.h"
|
||||||
#include "Statistics.h"
|
#include "Statistics.h"
|
||||||
#include "StringUtil.h"
|
#include "StringUtil.h"
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
#include "VideoConfig.h"
|
#include "VideoConfig.h"
|
||||||
#include "Statistics.h"
|
#include "Statistics.h"
|
||||||
#include "MemoryUtil.h"
|
#include "MemoryUtil.h"
|
||||||
#include "Profiler.h"
|
|
||||||
#include "Render.h"
|
#include "Render.h"
|
||||||
#include "ImageWrite.h"
|
#include "ImageWrite.h"
|
||||||
#include "BPMemory.h"
|
#include "BPMemory.h"
|
||||||
|
@ -123,8 +122,6 @@ void VertexManager::vFlush()
|
||||||
bpmem.genMode.numtexgens, (u32)bpmem.dstalpha.enable, (bpmem.alphaFunc.hex>>16)&0xff);
|
bpmem.genMode.numtexgens, (u32)bpmem.dstalpha.enable, (bpmem.alphaFunc.hex>>16)&0xff);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
DVSTARTPROFILE();
|
|
||||||
|
|
||||||
(void)GL_REPORT_ERROR();
|
(void)GL_REPORT_ERROR();
|
||||||
|
|
||||||
//glBindBuffer(GL_ARRAY_BUFFER, s_vboBuffers[s_nCurVBOIndex]);
|
//glBindBuffer(GL_ARRAY_BUFFER, s_vboBuffers[s_nCurVBOIndex]);
|
||||||
|
@ -136,9 +133,6 @@ void VertexManager::vFlush()
|
||||||
g_nativeVertexFmt->SetupVertexPointers();
|
g_nativeVertexFmt->SetupVertexPointers();
|
||||||
GL_REPORT_ERRORD();
|
GL_REPORT_ERRORD();
|
||||||
|
|
||||||
// set the textures
|
|
||||||
DVSTARTSUBPROFILE("VertexManager::Flush:textures");
|
|
||||||
|
|
||||||
u32 usedtextures = 0;
|
u32 usedtextures = 0;
|
||||||
for (u32 i = 0; i < (u32)bpmem.genMode.numtevstages + 1; ++i)
|
for (u32 i = 0; i < (u32)bpmem.genMode.numtevstages + 1; ++i)
|
||||||
if (bpmem.tevorders[i / 2].getEnable(i & 1))
|
if (bpmem.tevorders[i / 2].getEnable(i & 1))
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#include "Globals.h"
|
#include "Globals.h"
|
||||||
#include "Profiler.h"
|
|
||||||
#include "VideoConfig.h"
|
#include "VideoConfig.h"
|
||||||
#include "Statistics.h"
|
#include "Statistics.h"
|
||||||
|
|
||||||
|
@ -124,8 +123,6 @@ void VertexShaderCache::Shutdown()
|
||||||
|
|
||||||
VERTEXSHADER* VertexShaderCache::SetShader(u32 components)
|
VERTEXSHADER* VertexShaderCache::SetShader(u32 components)
|
||||||
{
|
{
|
||||||
DVSTARTPROFILE();
|
|
||||||
|
|
||||||
VERTEXSHADERUID uid;
|
VERTEXSHADERUID uid;
|
||||||
GetVertexShaderId(&uid, components);
|
GetVertexShaderId(&uid, components);
|
||||||
if (uid == last_vertex_shader_uid && vshaders[uid].frameCount == frameCount)
|
if (uid == last_vertex_shader_uid && vshaders[uid].frameCount == frameCount)
|
||||||
|
|
Loading…
Reference in New Issue