Commit 3c6344e7 by Al Patrick Committed by Jamie Madill

add TRACE_EVENT to ANGLE (reland)

Tracing code the same as previous CL: https://codereview.appspot.com/12699047/ Setup code simplified, and follows the GetProcAddress model of other gl functions. R=shannonwoods@google.com
parent 0b67bfbf
...@@ -39,6 +39,7 @@ Google Inc. ...@@ -39,6 +39,7 @@ Google Inc.
Adrienne Walker Adrienne Walker
thestig@chromium.org thestig@chromium.org
Justin Schuh Justin Schuh
Scott Graham
Adobe Systems Inc. Adobe Systems Inc.
Alexandru Chiculita Alexandru Chiculita
......
...@@ -236,11 +236,14 @@ ...@@ -236,11 +236,14 @@
'sources': [ 'sources': [
'third_party/murmurhash/MurmurHash3.h', 'third_party/murmurhash/MurmurHash3.h',
'third_party/murmurhash/MurmurHash3.cpp', 'third_party/murmurhash/MurmurHash3.cpp',
'third_party/trace_event/trace_event.h',
'common/angleutils.h', 'common/angleutils.h',
'common/debug.cpp', 'common/debug.cpp',
'common/debug.h', 'common/debug.h',
'common/mathutil.cpp', 'common/mathutil.cpp',
'common/mathutil.h', 'common/mathutil.h',
'common/event_tracer.cpp',
'common/event_tracer.h',
'common/RefCountObject.cpp', 'common/RefCountObject.cpp',
'common/RefCountObject.h', 'common/RefCountObject.h',
'common/utilities.cpp', 'common/utilities.cpp',
......
// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "common/event_tracer.h"
namespace gl
{
GetCategoryEnabledFlagFunc g_getCategoryEnabledFlag;
AddTraceEventFunc g_addTraceEvent;
} // namespace gl
extern "C" {
void __stdcall SetTraceFunctionPointers(GetCategoryEnabledFlagFunc getCategoryEnabledFlag,
AddTraceEventFunc addTraceEvent)
{
gl::g_getCategoryEnabledFlag = getCategoryEnabledFlag;
gl::g_addTraceEvent = addTraceEvent;
}
} // extern "C"
namespace gl
{
const unsigned char* TraceGetTraceCategoryEnabledFlag(const char* name)
{
if (g_getCategoryEnabledFlag)
{
return g_getCategoryEnabledFlag(name);
}
static unsigned char disabled = 0;
return &disabled;
}
void TraceAddTraceEvent(char phase, const unsigned char* categoryGroupEnabled, const char* name, unsigned long long id,
int numArgs, const char** argNames, const unsigned char* argTypes,
const unsigned long long* argValues, unsigned char flags)
{
if (g_addTraceEvent)
{
g_addTraceEvent(phase, categoryGroupEnabled, name, id, numArgs, argNames, argTypes, argValues, flags);
}
}
} // namespace gl
// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMMON_EVENT_TRACER_H_
#define COMMON_EVENT_TRACER_H_
extern "C" {
typedef const unsigned char* (*GetCategoryEnabledFlagFunc)(const char* name);
typedef void (*AddTraceEventFunc)(char phase, const unsigned char* categoryGroupEnabled, const char* name,
unsigned long long id, int numArgs, const char** argNames,
const unsigned char* argTypes, const unsigned long long* argValues,
unsigned char flags);
// extern "C" so that it has a reasonable name for GetProcAddress.
void __stdcall SetTraceFunctionPointers(GetCategoryEnabledFlagFunc get_category_enabled_flag,
AddTraceEventFunc add_trace_event_func);
}
namespace gl
{
const unsigned char* TraceGetTraceCategoryEnabledFlag(const char* name);
void TraceAddTraceEvent(char phase, const unsigned char* categoryGroupEnabled, const char* name, unsigned long long id,
int numArgs, const char** argNames, const unsigned char* argTypes,
const unsigned long long* argValues, unsigned char flags);
}
#endif // COMMON_EVENT_TRACER_H_
#define MAJOR_VERSION 2 #define MAJOR_VERSION 2
#define MINOR_VERSION 0 #define MINOR_VERSION 0
#define BUILD_VERSION 0 #define BUILD_VERSION 0
#define BUILD_REVISION 2007 #define BUILD_REVISION 2008
#define STRINGIFY(x) #x #define STRINGIFY(x) #x
#define MACRO_STRINGIFY(x) STRINGIFY(x) #define MACRO_STRINGIFY(x) STRINGIFY(x)
......
...@@ -288,4 +288,7 @@ EXPORTS ...@@ -288,4 +288,7 @@ EXPORTS
glGetProcAddress @148 NONAME glGetProcAddress @148 NONAME
glBindTexImage @158 NONAME glBindTexImage @158 NONAME
glCreateRenderer @177 NONAME glCreateRenderer @177 NONAME
glDestroyRenderer @178 NONAME glDestroyRenderer @178 NONAME
\ No newline at end of file
; Setting up TRACE macro callbacks
SetTraceFunctionPointers @284
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBGLESV2_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBGLESV2_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;ANGLE_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild> <MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
...@@ -120,7 +120,7 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" ...@@ -120,7 +120,7 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\"
<Optimization>MaxSpeed</Optimization> <Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion> <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)/..; $(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>ANGLE_DISABLE_TRACE;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBGLESV2_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>ANGLE_DISABLE_TRACE;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBGLESV2_EXPORTS;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_SECURE_SCL=0;ANGLE_IMPLEMENTATION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level4</WarningLevel> <WarningLevel>Level4</WarningLevel>
...@@ -250,6 +250,12 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" ...@@ -250,6 +250,12 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\"
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
</ClCompile> </ClCompile>
<ClCompile Include="..\common\event_tracer.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
</ClCompile>
<ClCompile Include="Fence.cpp" /> <ClCompile Include="Fence.cpp" />
<ClCompile Include="Float16ToFloat32.cpp" /> <ClCompile Include="Float16ToFloat32.cpp" />
<ClCompile Include="formatutils.cpp" /> <ClCompile Include="formatutils.cpp" />
...@@ -333,10 +339,12 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" ...@@ -333,10 +339,12 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\"
<ClInclude Include="..\..\include\GLES3\gl3platform.h" /> <ClInclude Include="..\..\include\GLES3\gl3platform.h" />
<ClInclude Include="..\common\angleutils.h" /> <ClInclude Include="..\common\angleutils.h" />
<ClInclude Include="..\common\debug.h" /> <ClInclude Include="..\common\debug.h" />
<ClInclude Include="..\common\event_tracer.h" />
<ClInclude Include="..\common\mathutil.h" /> <ClInclude Include="..\common\mathutil.h" />
<ClInclude Include="..\common\system.h" /> <ClInclude Include="..\common\system.h" />
<ClInclude Include="..\common\utilities.h" /> <ClInclude Include="..\common\utilities.h" />
<ClInclude Include="..\third_party\murmurhash\MurmurHash3.h" /> <ClInclude Include="..\third_party\murmurhash\MurmurHash3.h" />
<ClInclude Include="..\third_party\trace_event\trace_event.h" />
<ClInclude Include="angletypes.h" /> <ClInclude Include="angletypes.h" />
<ClInclude Include="BinaryStream.h" /> <ClInclude Include="BinaryStream.h" />
<ClInclude Include="Buffer.h" /> <ClInclude Include="Buffer.h" />
...@@ -495,3 +503,4 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\" ...@@ -495,3 +503,4 @@ copy "$(OutDir)libGLESv2.lib" "$(ProjectDir)..\..\lib\$(Configuration)\"
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>
...@@ -39,6 +39,9 @@ ...@@ -39,6 +39,9 @@
<Filter Include="Source Files\Renderer11"> <Filter Include="Source Files\Renderer11">
<UniqueIdentifier>{72db61d3-e081-4b58-bc63-a04a8a70585f}</UniqueIdentifier> <UniqueIdentifier>{72db61d3-e081-4b58-bc63-a04a8a70585f}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Third Party\trace_event">
<UniqueIdentifier>{ebfc1614-8f0b-48c7-b6bd-295bf91ef85c}</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="Buffer.cpp"> <ClCompile Include="Buffer.cpp">
...@@ -248,6 +251,9 @@ ...@@ -248,6 +251,9 @@
<ClCompile Include="renderer\IndexRangeCache.cpp"> <ClCompile Include="renderer\IndexRangeCache.cpp">
<Filter>Source Files\Renderer</Filter> <Filter>Source Files\Renderer</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\common\event_tracer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="RenderbufferProxySet.cpp"> <ClCompile Include="RenderbufferProxySet.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
...@@ -541,9 +547,15 @@ ...@@ -541,9 +547,15 @@
<ClInclude Include="renderer\IndexRangeCache.h"> <ClInclude Include="renderer\IndexRangeCache.h">
<Filter>Header Files\Renderer</Filter> <Filter>Header Files\Renderer</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="RenderbufferProxySet.h"> <ClInclude Include="renderer\IndexRangeCache.h">
<Filter>Header Files\Renderer</Filter>
</ClInclude>
<ClInclude Include="..\common\event_tracer.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\third_party\trace_event\trace_event.h">
<Filter>Third Party\trace_event</Filter>
</ClInclude>
<ClInclude Include="validationES2.h"> <ClInclude Include="validationES2.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "libGLESv2/renderer/Renderer9.h" #include "libGLESv2/renderer/Renderer9.h"
#include "libGLESv2/renderer/Renderer11.h" #include "libGLESv2/renderer/Renderer11.h"
#include "common/utilities.h" #include "common/utilities.h"
#include "third_party/trace_event/trace_event.h"
#if !defined(ANGLE_ENABLE_D3D11) #if !defined(ANGLE_ENABLE_D3D11)
// Enables use of the Direct3D 11 API for a default display, when available // Enables use of the Direct3D 11 API for a default display, when available
...@@ -41,6 +42,7 @@ Renderer::~Renderer() ...@@ -41,6 +42,7 @@ Renderer::~Renderer()
bool Renderer::initializeCompiler() bool Renderer::initializeCompiler()
{ {
TRACE_EVENT0("gpu", "initializeCompiler");
#if defined(ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES) #if defined(ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES)
// Find a D3DCompiler module that had already been loaded based on a predefined list of versions. // Find a D3DCompiler module that had already been loaded based on a predefined list of versions.
static TCHAR* d3dCompilerNames[] = ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES; static TCHAR* d3dCompilerNames[] = ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES;
......
...@@ -33,6 +33,8 @@ ...@@ -33,6 +33,8 @@
#include "libEGL/Display.h" #include "libEGL/Display.h"
#include "third_party/trace_event/trace_event.h"
// Can also be enabled by defining FORCE_REF_RAST in the project's predefined macros // Can also be enabled by defining FORCE_REF_RAST in the project's predefined macros
#define REF_RAST 0 #define REF_RAST 0
...@@ -171,10 +173,12 @@ EGLint Renderer9::initialize() ...@@ -171,10 +173,12 @@ EGLint Renderer9::initialize()
if (mSoftwareDevice) if (mSoftwareDevice)
{ {
TRACE_EVENT0("gpu", "GetModuleHandle_swiftshader");
mD3d9Module = GetModuleHandle(TEXT("swiftshader_d3d9.dll")); mD3d9Module = GetModuleHandle(TEXT("swiftshader_d3d9.dll"));
} }
else else
{ {
TRACE_EVENT0("gpu", "GetModuleHandle_d3d9");
mD3d9Module = GetModuleHandle(TEXT("d3d9.dll")); mD3d9Module = GetModuleHandle(TEXT("d3d9.dll"));
} }
...@@ -192,12 +196,14 @@ EGLint Renderer9::initialize() ...@@ -192,12 +196,14 @@ EGLint Renderer9::initialize()
// desktop. Direct3D9Ex is available in Windows Vista and later if suitable drivers are available. // desktop. Direct3D9Ex is available in Windows Vista and later if suitable drivers are available.
if (ANGLE_ENABLE_D3D9EX && Direct3DCreate9ExPtr && SUCCEEDED(Direct3DCreate9ExPtr(D3D_SDK_VERSION, &mD3d9Ex))) if (ANGLE_ENABLE_D3D9EX && Direct3DCreate9ExPtr && SUCCEEDED(Direct3DCreate9ExPtr(D3D_SDK_VERSION, &mD3d9Ex)))
{ {
TRACE_EVENT0("gpu", "D3d9Ex_QueryInterface");
ASSERT(mD3d9Ex); ASSERT(mD3d9Ex);
mD3d9Ex->QueryInterface(IID_IDirect3D9, reinterpret_cast<void**>(&mD3d9)); mD3d9Ex->QueryInterface(IID_IDirect3D9, reinterpret_cast<void**>(&mD3d9));
ASSERT(mD3d9); ASSERT(mD3d9);
} }
else else
{ {
TRACE_EVENT0("gpu", "Direct3DCreate9");
mD3d9 = Direct3DCreate9(D3D_SDK_VERSION); mD3d9 = Direct3DCreate9(D3D_SDK_VERSION);
} }
...@@ -215,21 +221,24 @@ EGLint Renderer9::initialize() ...@@ -215,21 +221,24 @@ EGLint Renderer9::initialize()
HRESULT result; HRESULT result;
// Give up on getting device caps after about one second. // Give up on getting device caps after about one second.
for (int i = 0; i < 10; ++i)
{ {
result = mD3d9->GetDeviceCaps(mAdapter, mDeviceType, &mDeviceCaps); TRACE_EVENT0("gpu", "GetDeviceCaps");
if (SUCCEEDED(result)) for (int i = 0; i < 10; ++i)
{
break;
}
else if (result == D3DERR_NOTAVAILABLE)
{ {
Sleep(100); // Give the driver some time to initialize/recover result = mD3d9->GetDeviceCaps(mAdapter, mDeviceType, &mDeviceCaps);
} if (SUCCEEDED(result))
else if (FAILED(result)) // D3DERR_OUTOFVIDEOMEMORY, E_OUTOFMEMORY, D3DERR_INVALIDDEVICE, or another error we can't recover from {
{ break;
ERR("failed to get device caps (0x%x)\n", result); }
return EGL_NOT_INITIALIZED; else if (result == D3DERR_NOTAVAILABLE)
{
Sleep(100); // Give the driver some time to initialize/recover
}
else if (FAILED(result)) // D3DERR_OUTOFVIDEOMEMORY, E_OUTOFMEMORY, D3DERR_INVALIDDEVICE, or another error we can't recover from
{
ERR("failed to get device caps (0x%x)\n", result);
return EGL_NOT_INITIALIZED;
}
} }
} }
...@@ -247,7 +256,10 @@ EGLint Renderer9::initialize() ...@@ -247,7 +256,10 @@ EGLint Renderer9::initialize()
return EGL_NOT_INITIALIZED; return EGL_NOT_INITIALIZED;
} }
mD3d9->GetAdapterIdentifier(mAdapter, 0, &mAdapterIdentifier); {
TRACE_EVENT0("gpu", "GetAdapterIdentifier");
mD3d9->GetAdapterIdentifier(mAdapter, 0, &mAdapterIdentifier);
}
// ATI cards on XP have problems with non-power-of-two textures. // ATI cards on XP have problems with non-power-of-two textures.
mSupportsNonPower2Textures = !(mDeviceCaps.TextureCaps & D3DPTEXTURECAPS_POW2) && mSupportsNonPower2Textures = !(mDeviceCaps.TextureCaps & D3DPTEXTURECAPS_POW2) &&
...@@ -292,6 +304,7 @@ EGLint Renderer9::initialize() ...@@ -292,6 +304,7 @@ EGLint Renderer9::initialize()
const d3d9::D3DFormatSet &d3d9Formats = d3d9::GetAllUsedD3DFormats(); const d3d9::D3DFormatSet &d3d9Formats = d3d9::GetAllUsedD3DFormats();
for (d3d9::D3DFormatSet::const_iterator i = d3d9Formats.begin(); i != d3d9Formats.end(); ++i) for (d3d9::D3DFormatSet::const_iterator i = d3d9Formats.begin(); i != d3d9Formats.end(); ++i)
{ {
TRACE_EVENT0("gpu", "getMultiSampleSupport");
MultisampleSupportInfo support = getMultiSampleSupport(*i); MultisampleSupportInfo support = getMultiSampleSupport(*i);
mMultiSampleSupport[*i] = support; mMultiSampleSupport[*i] = support;
mMaxSupportedSamples = std::max(mMaxSupportedSamples, support.maxSupportedSamples); mMaxSupportedSamples = std::max(mMaxSupportedSamples, support.maxSupportedSamples);
...@@ -300,12 +313,18 @@ EGLint Renderer9::initialize() ...@@ -300,12 +313,18 @@ EGLint Renderer9::initialize()
static const TCHAR windowName[] = TEXT("AngleHiddenWindow"); static const TCHAR windowName[] = TEXT("AngleHiddenWindow");
static const TCHAR className[] = TEXT("STATIC"); static const TCHAR className[] = TEXT("STATIC");
mDeviceWindow = CreateWindowEx(WS_EX_NOACTIVATE, className, windowName, WS_DISABLED | WS_POPUP, 0, 0, 1, 1, HWND_MESSAGE, NULL, GetModuleHandle(NULL), NULL); {
TRACE_EVENT0("gpu", "CreateWindowEx");
mDeviceWindow = CreateWindowEx(WS_EX_NOACTIVATE, className, windowName, WS_DISABLED | WS_POPUP, 0, 0, 1, 1, HWND_MESSAGE, NULL, GetModuleHandle(NULL), NULL);
}
D3DPRESENT_PARAMETERS presentParameters = getDefaultPresentParameters(); D3DPRESENT_PARAMETERS presentParameters = getDefaultPresentParameters();
DWORD behaviorFlags = D3DCREATE_FPU_PRESERVE | D3DCREATE_NOWINDOWCHANGES; DWORD behaviorFlags = D3DCREATE_FPU_PRESERVE | D3DCREATE_NOWINDOWCHANGES;
result = mD3d9->CreateDevice(mAdapter, mDeviceType, mDeviceWindow, behaviorFlags | D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_PUREDEVICE, &presentParameters, &mDevice); {
TRACE_EVENT0("gpu", "D3d9_CreateDevice");
result = mD3d9->CreateDevice(mAdapter, mDeviceType, mDeviceWindow, behaviorFlags | D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_PUREDEVICE, &presentParameters, &mDevice);
}
if (result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY || result == D3DERR_DEVICELOST) if (result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY || result == D3DERR_DEVICELOST)
{ {
return EGL_BAD_ALLOC; return EGL_BAD_ALLOC;
...@@ -313,6 +332,7 @@ EGLint Renderer9::initialize() ...@@ -313,6 +332,7 @@ EGLint Renderer9::initialize()
if (FAILED(result)) if (FAILED(result))
{ {
TRACE_EVENT0("gpu", "D3d9_CreateDevice2");
result = mD3d9->CreateDevice(mAdapter, mDeviceType, mDeviceWindow, behaviorFlags | D3DCREATE_SOFTWARE_VERTEXPROCESSING, &presentParameters, &mDevice); result = mD3d9->CreateDevice(mAdapter, mDeviceType, mDeviceWindow, behaviorFlags | D3DCREATE_SOFTWARE_VERTEXPROCESSING, &presentParameters, &mDevice);
if (FAILED(result)) if (FAILED(result))
...@@ -324,35 +344,45 @@ EGLint Renderer9::initialize() ...@@ -324,35 +344,45 @@ EGLint Renderer9::initialize()
if (mD3d9Ex) if (mD3d9Ex)
{ {
TRACE_EVENT0("gpu", "mDevice_QueryInterface");
result = mDevice->QueryInterface(IID_IDirect3DDevice9Ex, (void**) &mDeviceEx); result = mDevice->QueryInterface(IID_IDirect3DDevice9Ex, (void**) &mDeviceEx);
ASSERT(SUCCEEDED(result)); ASSERT(SUCCEEDED(result));
} }
mVertexShaderCache.initialize(mDevice); {
mPixelShaderCache.initialize(mDevice); TRACE_EVENT0("gpu", "ShaderCache initialize");
mVertexShaderCache.initialize(mDevice);
mPixelShaderCache.initialize(mDevice);
}
// Check occlusion query support // Check occlusion query support
IDirect3DQuery9 *occlusionQuery = NULL; IDirect3DQuery9 *occlusionQuery = NULL;
if (SUCCEEDED(mDevice->CreateQuery(D3DQUERYTYPE_OCCLUSION, &occlusionQuery)) && occlusionQuery)
{
SafeRelease(occlusionQuery);
mOcclusionQuerySupport = true;
}
else
{ {
mOcclusionQuerySupport = false; TRACE_EVENT0("gpu", "device_CreateQuery");
if (SUCCEEDED(mDevice->CreateQuery(D3DQUERYTYPE_OCCLUSION, &occlusionQuery)) && occlusionQuery)
{
SafeRelease(occlusionQuery);
mOcclusionQuerySupport = true;
}
else
{
mOcclusionQuerySupport = false;
}
} }
// Check event query support // Check event query support
IDirect3DQuery9 *eventQuery = NULL; IDirect3DQuery9 *eventQuery = NULL;
if (SUCCEEDED(mDevice->CreateQuery(D3DQUERYTYPE_EVENT, &eventQuery)) && eventQuery)
{ {
SafeRelease(eventQuery); TRACE_EVENT0("gpu", "device_CreateQuery2");
mEventQuerySupport = true; if (SUCCEEDED(mDevice->CreateQuery(D3DQUERYTYPE_EVENT, &eventQuery)) && eventQuery)
} {
else SafeRelease(eventQuery);
{ mEventQuerySupport = true;
mEventQuerySupport = false; }
else
{
mEventQuerySupport = false;
}
} }
D3DDISPLAYMODE currentDisplayMode; D3DDISPLAYMODE currentDisplayMode;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment