Commit c9d13d2d by Jamie Madill

Add trace events for D3D11 initialization.

This helps a local user profile their D3D11 startup time. BUG=436191 BUG=angleproject:966 Change-Id: Ib1b3d62194233cd502980d87c316a95e9bd3a04c Reviewed-on: https://chromium-review.googlesource.com/264935Reviewed-by: 's avatarKenneth Russell <kbr@chromium.org> Reviewed-by: 's avatarBrandon Jones <bajones@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org>
parent d8b36d45
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include "libANGLE/Surface.h" #include "libANGLE/Surface.h"
#include "libANGLE/Device.h" #include "libANGLE/Device.h"
#include "libANGLE/renderer/DisplayImpl.h" #include "libANGLE/renderer/DisplayImpl.h"
#include "third_party/trace_event/trace_event.h"
#if defined(ANGLE_ENABLE_D3D9) || defined(ANGLE_ENABLE_D3D11) #if defined(ANGLE_ENABLE_D3D9) || defined(ANGLE_ENABLE_D3D11)
# include "libANGLE/renderer/d3d/DisplayD3D.h" # include "libANGLE/renderer/d3d/DisplayD3D.h"
...@@ -224,6 +225,8 @@ void Display::setAttributes(rx::DisplayImpl *impl, const AttributeMap &attribMap ...@@ -224,6 +225,8 @@ void Display::setAttributes(rx::DisplayImpl *impl, const AttributeMap &attribMap
Error Display::initialize() Error Display::initialize()
{ {
TRACE_EVENT0("gpu.angle", "egl::Display::initialize");
ASSERT(mImplementation != nullptr); ASSERT(mImplementation != nullptr);
if (isInitialized()) if (isInitialized())
......
...@@ -119,7 +119,7 @@ HLSLCompiler::~HLSLCompiler() ...@@ -119,7 +119,7 @@ HLSLCompiler::~HLSLCompiler()
bool HLSLCompiler::initialize() bool HLSLCompiler::initialize()
{ {
TRACE_EVENT0("gpu", "initializeCompiler"); TRACE_EVENT0("gpu.angle", "HLSLCompiler::initialize");
#if !defined(ANGLE_ENABLE_WINDOWS_STORE) #if !defined(ANGLE_ENABLE_WINDOWS_STORE)
#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.
......
...@@ -10,10 +10,11 @@ ...@@ -10,10 +10,11 @@
#include <float.h> #include <float.h>
#include "libANGLE/formatutils.h"
#include "libANGLE/renderer/d3d/d3d11/Renderer11.h" #include "libANGLE/renderer/d3d/d3d11/Renderer11.h"
#include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h" #include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h"
#include "libANGLE/renderer/d3d/d3d11/formatutils11.h" #include "libANGLE/renderer/d3d/d3d11/formatutils11.h"
#include "libANGLE/formatutils.h" #include "third_party/trace_event/trace_event.h"
#include "libANGLE/renderer/d3d/d3d11/shaders/compiled/passthrough2d11vs.h" #include "libANGLE/renderer/d3d/d3d11/shaders/compiled/passthrough2d11vs.h"
#include "libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughdepth2d11ps.h" #include "libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughdepth2d11ps.h"
...@@ -182,6 +183,8 @@ Blit11::Blit11(Renderer11 *renderer) ...@@ -182,6 +183,8 @@ Blit11::Blit11(Renderer11 *renderer)
mQuad3DIL(NULL), mQuad3DVS(NULL), mQuad3DGS(NULL), mQuad3DIL(NULL), mQuad3DVS(NULL), mQuad3DGS(NULL),
mSwizzleCB(NULL) mSwizzleCB(NULL)
{ {
TRACE_EVENT0("gpu.angle", "Blit11::Blit11");
HRESULT result; HRESULT result;
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
...@@ -972,6 +975,8 @@ void Blit11::addSwizzleShaderToMap(GLenum destType, D3D11_SRV_DIMENSION viewDime ...@@ -972,6 +975,8 @@ void Blit11::addSwizzleShaderToMap(GLenum destType, D3D11_SRV_DIMENSION viewDime
void Blit11::buildShaderMap() void Blit11::buildShaderMap()
{ {
TRACE_EVENT0("gpu.angle", "Blit11::buildShaderMap");
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
// 2D shaders (OpenGL ES 2+) // 2D shaders (OpenGL ES 2+)
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h" #include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h"
#include "libANGLE/renderer/d3d/d3d11/RenderTarget11.h" #include "libANGLE/renderer/d3d/d3d11/RenderTarget11.h"
#include "libANGLE/renderer/d3d/d3d11/formatutils11.h" #include "libANGLE/renderer/d3d/d3d11/formatutils11.h"
#include "third_party/trace_event/trace_event.h"
// Precompiled shaders // Precompiled shaders
#include "libANGLE/renderer/d3d/d3d11/shaders/compiled/clearfloat11vs.h" #include "libANGLE/renderer/d3d/d3d11/shaders/compiled/clearfloat11vs.h"
...@@ -87,6 +88,8 @@ Clear11::Clear11(Renderer11 *renderer) ...@@ -87,6 +88,8 @@ Clear11::Clear11(Renderer11 *renderer)
: mRenderer(renderer), mClearBlendStates(StructLessThan<ClearBlendInfo>), mClearDepthStencilStates(StructLessThan<ClearDepthStencilInfo>), : mRenderer(renderer), mClearBlendStates(StructLessThan<ClearBlendInfo>), mClearDepthStencilStates(StructLessThan<ClearDepthStencilInfo>),
mVertexBuffer(NULL), mRasterizerState(NULL), mSupportsClearView(false) mVertexBuffer(NULL), mRasterizerState(NULL), mSupportsClearView(false)
{ {
TRACE_EVENT0("gpu.angle", "Clear11::Clear11");
HRESULT result; HRESULT result;
ID3D11Device *device = renderer->getDevice(); ID3D11Device *device = renderer->getDevice();
......
...@@ -7,17 +7,18 @@ ...@@ -7,17 +7,18 @@
// SwapChain11.cpp: Implements a back-end specific class for the D3D11 swap chain. // SwapChain11.cpp: Implements a back-end specific class for the D3D11 swap chain.
#include "libANGLE/renderer/d3d/d3d11/SwapChain11.h" #include "libANGLE/renderer/d3d/d3d11/SwapChain11.h"
#include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h"
#include "libANGLE/renderer/d3d/d3d11/formatutils11.h"
#include "libANGLE/renderer/d3d/d3d11/Renderer11.h"
#include "libANGLE/renderer/d3d/d3d11/NativeWindow.h"
#include "libANGLE/features.h" #include "libANGLE/features.h"
#include "libANGLE/renderer/d3d/d3d11/NativeWindow.h"
#include "libANGLE/renderer/d3d/d3d11/Renderer11.h"
#include "libANGLE/renderer/d3d/d3d11/formatutils11.h"
#include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h"
#include "third_party/trace_event/trace_event.h"
// Precompiled shaders // Precompiled shaders
#include "libANGLE/renderer/d3d/d3d11/shaders/compiled/passthrough2d11vs.h" #include "libANGLE/renderer/d3d/d3d11/shaders/compiled/passthrough2d11vs.h"
#include "libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2d11ps.h" #include "libANGLE/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2d11ps.h"
namespace rx namespace rx
{ {
...@@ -89,6 +90,7 @@ void SwapChain11::releaseOffscreenTexture() ...@@ -89,6 +90,7 @@ void SwapChain11::releaseOffscreenTexture()
EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHeight) EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHeight)
{ {
TRACE_EVENT0("gpu.angle", "SwapChain11::resetOffscreenTexture");
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
ASSERT(device != NULL); ASSERT(device != NULL);
...@@ -324,6 +326,7 @@ EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHei ...@@ -324,6 +326,7 @@ EGLint SwapChain11::resetOffscreenTexture(int backbufferWidth, int backbufferHei
EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight) EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight)
{ {
TRACE_EVENT0("gpu.angle", "SwapChain11::resize");
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
if (device == NULL) if (device == NULL)
...@@ -383,6 +386,7 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight) ...@@ -383,6 +386,7 @@ EGLint SwapChain11::resize(EGLint backbufferWidth, EGLint backbufferHeight)
EGLint SwapChain11::reset(int backbufferWidth, int backbufferHeight, EGLint swapInterval) EGLint SwapChain11::reset(int backbufferWidth, int backbufferHeight, EGLint swapInterval)
{ {
TRACE_EVENT0("gpu.angle", "SwapChain11::reset");
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
if (device == NULL) if (device == NULL)
...@@ -454,6 +458,7 @@ EGLint SwapChain11::reset(int backbufferWidth, int backbufferHeight, EGLint swap ...@@ -454,6 +458,7 @@ EGLint SwapChain11::reset(int backbufferWidth, int backbufferHeight, EGLint swap
void SwapChain11::initPassThroughResources() void SwapChain11::initPassThroughResources()
{ {
TRACE_EVENT0("gpu.angle", "SwapChain11::initPassThroughResources");
ID3D11Device *device = mRenderer->getDevice(); ID3D11Device *device = mRenderer->getDevice();
ASSERT(device != NULL); ASSERT(device != NULL);
......
...@@ -183,7 +183,7 @@ egl::Error Renderer9::initialize() ...@@ -183,7 +183,7 @@ egl::Error Renderer9::initialize()
"Compiler failed to initialize."); "Compiler failed to initialize.");
} }
TRACE_EVENT0("gpu", "GetModuleHandle_d3d9"); TRACE_EVENT0("gpu.angle", "GetModuleHandle_d3d9");
mD3d9Module = GetModuleHandle(TEXT("d3d9.dll")); mD3d9Module = GetModuleHandle(TEXT("d3d9.dll"));
if (mD3d9Module == NULL) if (mD3d9Module == NULL)
...@@ -199,14 +199,14 @@ egl::Error Renderer9::initialize() ...@@ -199,14 +199,14 @@ egl::Error 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_D3D9EX == ANGLE_ENABLED && Direct3DCreate9ExPtr && SUCCEEDED(Direct3DCreate9ExPtr(D3D_SDK_VERSION, &mD3d9Ex))) if (ANGLE_D3D9EX == ANGLE_ENABLED && Direct3DCreate9ExPtr && SUCCEEDED(Direct3DCreate9ExPtr(D3D_SDK_VERSION, &mD3d9Ex)))
{ {
TRACE_EVENT0("gpu", "D3d9Ex_QueryInterface"); TRACE_EVENT0("gpu.angle", "D3d9Ex_QueryInterface");
ASSERT(mD3d9Ex); ASSERT(mD3d9Ex);
mD3d9Ex->QueryInterface(__uuidof(IDirect3D9), reinterpret_cast<void**>(&mD3d9)); mD3d9Ex->QueryInterface(__uuidof(IDirect3D9), reinterpret_cast<void**>(&mD3d9));
ASSERT(mD3d9); ASSERT(mD3d9);
} }
else else
{ {
TRACE_EVENT0("gpu", "Direct3DCreate9"); TRACE_EVENT0("gpu.angle", "Direct3DCreate9");
mD3d9 = Direct3DCreate9(D3D_SDK_VERSION); mD3d9 = Direct3DCreate9(D3D_SDK_VERSION);
} }
...@@ -224,7 +224,7 @@ egl::Error Renderer9::initialize() ...@@ -224,7 +224,7 @@ egl::Error Renderer9::initialize()
// Give up on getting device caps after about one second. // Give up on getting device caps after about one second.
{ {
TRACE_EVENT0("gpu", "GetDeviceCaps"); TRACE_EVENT0("gpu.angle", "GetDeviceCaps");
for (int i = 0; i < 10; ++i) for (int i = 0; i < 10; ++i)
{ {
result = mD3d9->GetDeviceCaps(mAdapter, mDeviceType, &mDeviceCaps); result = mD3d9->GetDeviceCaps(mAdapter, mDeviceType, &mDeviceCaps);
...@@ -268,7 +268,7 @@ egl::Error Renderer9::initialize() ...@@ -268,7 +268,7 @@ egl::Error Renderer9::initialize()
} }
{ {
TRACE_EVENT0("gpu", "GetAdapterIdentifier"); TRACE_EVENT0("gpu.angle", "GetAdapterIdentifier");
mD3d9->GetAdapterIdentifier(mAdapter, 0, &mAdapterIdentifier); mD3d9->GetAdapterIdentifier(mAdapter, 0, &mAdapterIdentifier);
} }
...@@ -276,7 +276,7 @@ egl::Error Renderer9::initialize() ...@@ -276,7 +276,7 @@ egl::Error Renderer9::initialize()
static const TCHAR className[] = TEXT("STATIC"); static const TCHAR className[] = TEXT("STATIC");
{ {
TRACE_EVENT0("gpu", "CreateWindowEx"); TRACE_EVENT0("gpu.angle", "CreateWindowEx");
mDeviceWindow = CreateWindowEx(WS_EX_NOACTIVATE, className, windowName, WS_DISABLED | WS_POPUP, 0, 0, 1, 1, HWND_MESSAGE, NULL, GetModuleHandle(NULL), NULL); mDeviceWindow = CreateWindowEx(WS_EX_NOACTIVATE, className, windowName, WS_DISABLED | WS_POPUP, 0, 0, 1, 1, HWND_MESSAGE, NULL, GetModuleHandle(NULL), NULL);
} }
...@@ -284,7 +284,7 @@ egl::Error Renderer9::initialize() ...@@ -284,7 +284,7 @@ egl::Error Renderer9::initialize()
DWORD behaviorFlags = D3DCREATE_FPU_PRESERVE | D3DCREATE_NOWINDOWCHANGES | D3DCREATE_MULTITHREADED; DWORD behaviorFlags = D3DCREATE_FPU_PRESERVE | D3DCREATE_NOWINDOWCHANGES | D3DCREATE_MULTITHREADED;
{ {
TRACE_EVENT0("gpu", "D3d9_CreateDevice"); TRACE_EVENT0("gpu.angle", "D3d9_CreateDevice");
result = mD3d9->CreateDevice(mAdapter, mDeviceType, mDeviceWindow, behaviorFlags | D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_PUREDEVICE, &presentParameters, &mDevice); 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)
...@@ -295,7 +295,7 @@ egl::Error Renderer9::initialize() ...@@ -295,7 +295,7 @@ egl::Error Renderer9::initialize()
if (FAILED(result)) if (FAILED(result))
{ {
TRACE_EVENT0("gpu", "D3d9_CreateDevice2"); TRACE_EVENT0("gpu.angle", "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))
...@@ -308,13 +308,13 @@ egl::Error Renderer9::initialize() ...@@ -308,13 +308,13 @@ egl::Error Renderer9::initialize()
if (mD3d9Ex) if (mD3d9Ex)
{ {
TRACE_EVENT0("gpu", "mDevice_QueryInterface"); TRACE_EVENT0("gpu.angle", "mDevice_QueryInterface");
result = mDevice->QueryInterface(__uuidof(IDirect3DDevice9Ex), (void**)&mDeviceEx); result = mDevice->QueryInterface(__uuidof(IDirect3DDevice9Ex), (void**)&mDeviceEx);
ASSERT(SUCCEEDED(result)); ASSERT(SUCCEEDED(result));
} }
{ {
TRACE_EVENT0("gpu", "ShaderCache initialize"); TRACE_EVENT0("gpu.angle", "ShaderCache initialize");
mVertexShaderCache.initialize(mDevice); mVertexShaderCache.initialize(mDevice);
mPixelShaderCache.initialize(mDevice); mPixelShaderCache.initialize(mDevice);
} }
......
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