summaryrefslogtreecommitdiffstats
path: root/src/angle/patches/0000-General-fixes-for-ANGLE-2.1.patch
diff options
context:
space:
mode:
Diffstat (limited to 'src/angle/patches/0000-General-fixes-for-ANGLE-2.1.patch')
-rw-r--r--src/angle/patches/0000-General-fixes-for-ANGLE-2.1.patch1437
1 files changed, 1194 insertions, 243 deletions
diff --git a/src/angle/patches/0000-General-fixes-for-ANGLE-2.1.patch b/src/angle/patches/0000-General-fixes-for-ANGLE-2.1.patch
index 570ae63767..d5e3697c4f 100644
--- a/src/angle/patches/0000-General-fixes-for-ANGLE-2.1.patch
+++ b/src/angle/patches/0000-General-fixes-for-ANGLE-2.1.patch
@@ -1,44 +1,47 @@
-From 7597b9363748afc84d682dd9ef5bc8bc272812f3 Mon Sep 17 00:00:00 2001
+From f409f6837ce80d722eb6d2ff178b61b713d3e8c7 Mon Sep 17 00:00:00 2001
From: Andrew Knight <andrew.knight@digia.com>
-Date: Tue, 5 Aug 2014 09:21:44 +0300
+Date: Thu, 25 Sep 2014 13:23:19 +0300
Subject: [PATCH] General fixes for ANGLE 2.1
- Fix commit.h include (use hard-coded version)
- Fix undefined intptr_t in egl.h and eglext.h
-- Fix export mismatch caused by angle_gl.h
+- Fix export mismatch in libEGL.cpp and libGLESv2.cpp
- Remove D3D9 d3dcompiler.h include requirement in the translator
- Normalize all precompiled shader names and includes
+- Remove third-party event tracing; it was hardly used in ANGLE
+ and not enabled in Qt builds anyway.
Change-Id: I22254aed62e89a26756ca0784bae95909189c0f9
---
- src/3rdparty/angle/include/EGL/egl.h | 2 +-
- src/3rdparty/angle/include/EGL/eglext.h | 2 +-
- src/3rdparty/angle/include/angle_gl.h | 3 +
- src/3rdparty/angle/src/common/platform.h | 5 +-
- src/3rdparty/angle/src/common/version.h | 2 +-
- src/3rdparty/angle/src/libEGL/Config.h | 1 -
- src/3rdparty/angle/src/libEGL/Display.cpp | 3 +-
- src/3rdparty/angle/src/libEGL/Surface.h | 1 -
- src/3rdparty/angle/src/libEGL/main.h | 1 +
- src/3rdparty/angle/src/libGLESv2/Context.h | 1 -
- src/3rdparty/angle/src/libGLESv2/formatutils.h | 2 +-
- src/3rdparty/angle/src/libGLESv2/main.h | 3 +
- src/3rdparty/angle/src/libGLESv2/precompiled.h | 1 +
- .../angle/src/libGLESv2/renderer/IndexRangeCache.h | 2 +-
- .../angle/src/libGLESv2/renderer/Renderer.h | 1 +
- .../angle/src/libGLESv2/renderer/copyimage.h | 2 +-
- .../src/libGLESv2/renderer/d3d/HLSLCompiler.cpp | 2 +
- .../src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp | 66 +++++++++++-----------
- .../src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp | 12 ++--
- .../renderer/d3d/d3d11/PixelTransfer11.cpp | 10 ++--
- .../libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp | 6 +-
- .../renderer/d3d/d3d11/shaders/Clear11.hlsl | 4 ++
- .../src/libGLESv2/renderer/d3d/d3d9/Blit9.cpp | 20 +++----
- .../src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp | 4 +-
- .../src/libGLESv2/renderer/d3d/d3d9/SwapChain9.cpp | 2 +-
- .../libGLESv2/renderer/d3d/d3d9/shaders/Blit.ps | 6 +-
- .../libGLESv2/renderer/d3d/d3d9/shaders/Blit.vs | 4 +-
- 27 files changed, 92 insertions(+), 76 deletions(-)
+ src/3rdparty/angle/include/EGL/egl.h | 2 +-
+ src/3rdparty/angle/include/EGL/eglext.h | 2 +-
+ src/3rdparty/angle/src/common/event_tracer.cpp | 49 --
+ src/3rdparty/angle/src/common/event_tracer.h | 43 --
+ src/3rdparty/angle/src/common/version.h | 2 +-
+ src/3rdparty/angle/src/libEGL/libEGL.cpp | 3 +
+ src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp | 5 +
+ src/3rdparty/angle/src/libGLESv2/libGLESv2.def | 3 -
+ .../angle/src/libGLESv2/libGLESv2_mingw32.def | 3 -
+ src/3rdparty/angle/src/libGLESv2/libGLESv2d.def | 3 -
+ .../angle/src/libGLESv2/libGLESv2d_mingw32.def | 3 -
+ .../angle/src/libGLESv2/renderer/Renderer.cpp | 1 -
+ .../angle/src/libGLESv2/renderer/SwapChain.h | 4 -
+ .../src/libGLESv2/renderer/d3d/HLSLCompiler.cpp | 6 +-
+ .../src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp | 66 +-
+ .../src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp | 12 +-
+ .../renderer/d3d/d3d11/PixelTransfer11.cpp | 10 +-
+ .../libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp | 4 +-
+ .../renderer/d3d/d3d11/shaders/Clear11.hlsl | 4 +
+ .../src/libGLESv2/renderer/d3d/d3d9/Blit9.cpp | 20 +-
+ .../src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp | 12 -
+ .../libGLESv2/renderer/d3d/d3d9/shaders/Blit.ps | 6 +-
+ .../libGLESv2/renderer/d3d/d3d9/shaders/Blit.vs | 4 +-
+ .../src/third_party/trace_event/trace_event.h | 826 ---------------------
+ src/angle/src/common/common.pri | 2 -
+ 25 files changed, 80 insertions(+), 1015 deletions(-)
+ delete mode 100644 src/3rdparty/angle/src/common/event_tracer.cpp
+ delete mode 100644 src/3rdparty/angle/src/common/event_tracer.h
+ delete mode 100644 src/3rdparty/angle/src/third_party/trace_event/trace_event.h
diff --git a/src/3rdparty/angle/include/EGL/egl.h b/src/3rdparty/angle/include/EGL/egl.h
index 12590a0..ab2f0cd 100644
@@ -66,43 +69,110 @@ index 9e29605..989359b 100644
typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
-diff --git a/src/3rdparty/angle/include/angle_gl.h b/src/3rdparty/angle/include/angle_gl.h
-index d093f75..663aa25 100644
---- a/src/3rdparty/angle/include/angle_gl.h
-+++ b/src/3rdparty/angle/include/angle_gl.h
-@@ -10,6 +10,9 @@
- #ifndef ANGLE_GL_H_
- #define ANGLE_GL_H_
-
-+#define GL_GLEXT_PROTOTYPES
-+#define GL_APICALL
-+
- #include "GLES2/gl2.h"
- #include "GLES2/gl2ext.h"
- #include "GLES3/gl3.h"
-diff --git a/src/3rdparty/angle/src/common/platform.h b/src/3rdparty/angle/src/common/platform.h
-index d07297d..aa0b985 100644
---- a/src/3rdparty/angle/src/common/platform.h
-+++ b/src/3rdparty/angle/src/common/platform.h
-@@ -49,7 +49,6 @@
-
- # if defined(ANGLE_ENABLE_D3D9) || defined(ANGLE_ENABLE_PERF)
- # include <d3d9.h>
--# include <d3dcompiler.h>
- # endif
-
- # if defined(ANGLE_ENABLE_D3D11)
-@@ -62,6 +61,10 @@
-
- # undef near
- # undef far
-+# undef NEAR
-+# define NEAR
-+# undef FAR
-+# define FAR
- #endif
-
- #endif // COMMON_PLATFORM_H_
+diff --git a/src/3rdparty/angle/src/common/event_tracer.cpp b/src/3rdparty/angle/src/common/event_tracer.cpp
+deleted file mode 100644
+index 353c69d..0000000
+--- a/src/3rdparty/angle/src/common/event_tracer.cpp
++++ /dev/null
+@@ -1,49 +0,0 @@
+-// 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 TRACE_ENTRY 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
+diff --git a/src/3rdparty/angle/src/common/event_tracer.h b/src/3rdparty/angle/src/common/event_tracer.h
+deleted file mode 100644
+index fa97435..0000000
+--- a/src/3rdparty/angle/src/common/event_tracer.h
++++ /dev/null
+@@ -1,43 +0,0 @@
+-// 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_
+-
+-#include "common/platform.h"
+-
+-#if !defined(TRACE_ENTRY)
+-# ifdef ANGLE_PLATFORM_WINDOWS
+-# define TRACE_ENTRY __stdcall
+-# else
+-# define TRACE_ENTRY
+-# endif // ANGLE_PLATFORM_WINDOWS
+-#endif //TRACE_ENTRY
+-
+-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 TRACE_ENTRY 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_
diff --git a/src/3rdparty/angle/src/common/version.h b/src/3rdparty/angle/src/common/version.h
index d9148d1..f01e024 100644
--- a/src/3rdparty/angle/src/common/version.h
@@ -113,163 +183,146 @@ index d9148d1..f01e024 100644
#define ANGLE_MAJOR_VERSION 2
#define ANGLE_MINOR_VERSION 1
-diff --git a/src/3rdparty/angle/src/libEGL/Config.h b/src/3rdparty/angle/src/libEGL/Config.h
-index 680337b..9844114 100644
---- a/src/3rdparty/angle/src/libEGL/Config.h
-+++ b/src/3rdparty/angle/src/libEGL/Config.h
-@@ -11,7 +11,6 @@
- #ifndef INCLUDE_CONFIG_H_
- #define INCLUDE_CONFIG_H_
-
--#define EGLAPI
- #include <EGL/egl.h>
+diff --git a/src/3rdparty/angle/src/libEGL/libEGL.cpp b/src/3rdparty/angle/src/libEGL/libEGL.cpp
+index f9a4780..7ce2b93 100644
+--- a/src/3rdparty/angle/src/libEGL/libEGL.cpp
++++ b/src/3rdparty/angle/src/libEGL/libEGL.cpp
+@@ -6,6 +6,9 @@
- #include <set>
-diff --git a/src/3rdparty/angle/src/libEGL/Display.cpp b/src/3rdparty/angle/src/libEGL/Display.cpp
-index 43d9b26..459648c 100644
---- a/src/3rdparty/angle/src/libEGL/Display.cpp
-+++ b/src/3rdparty/angle/src/libEGL/Display.cpp
-@@ -14,6 +14,7 @@
- #include <map>
- #include <vector>
- #include <sstream>
-+#include <iterator>
+ // libEGL.cpp: Implements the exported EGL functions.
+
++#undef EGLAPI
++#define EGLAPI
++
+ #include <exception>
#include "common/debug.h"
- #include "common/mathutil.h"
-@@ -552,7 +553,7 @@ void Display::initDisplayExtensionString()
- }
+diff --git a/src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp b/src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp
+index 198c0ee..07f5d47 100644
+--- a/src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp
++++ b/src/3rdparty/angle/src/libGLESv2/libGLESv2.cpp
+@@ -6,6 +6,10 @@
- // TODO: complete support for the EGL_KHR_create_context extension
-- extensions.push_back("EGL_KHR_create_context");
-+ //extensions.push_back("EGL_KHR_create_context");
-
- std::ostringstream stream;
- std::copy(extensions.begin(), extensions.end(), std::ostream_iterator<std::string>(stream, " "));
-diff --git a/src/3rdparty/angle/src/libEGL/Surface.h b/src/3rdparty/angle/src/libEGL/Surface.h
-index 2361fcd..3caf620 100644
---- a/src/3rdparty/angle/src/libEGL/Surface.h
-+++ b/src/3rdparty/angle/src/libEGL/Surface.h
-@@ -11,7 +11,6 @@
- #ifndef LIBEGL_SURFACE_H_
- #define LIBEGL_SURFACE_H_
-
--#define EGLAPI
- #include <EGL/egl.h>
+ // libGLESv2.cpp: Implements the exported OpenGL ES 2.0 functions.
- #include "common/angleutils.h"
-diff --git a/src/3rdparty/angle/src/libEGL/main.h b/src/3rdparty/angle/src/libEGL/main.h
-index 77da8f0..6030fb6 100644
---- a/src/3rdparty/angle/src/libEGL/main.h
-+++ b/src/3rdparty/angle/src/libEGL/main.h
-@@ -9,6 +9,7 @@
- #ifndef LIBEGL_MAIN_H_
- #define LIBEGL_MAIN_H_
++#undef GL_APICALL
++#define GL_APICALL
++#define GL_GLEXT_PROTOTYPES
++
+ #include "common/version.h"
+ #include "common/utilities.h"
-+#undef EGLAPI
- #define EGLAPI
- #include <EGL/egl.h>
- #include <EGL/eglext.h>
-diff --git a/src/3rdparty/angle/src/libGLESv2/Context.h b/src/3rdparty/angle/src/libGLESv2/Context.h
-index 4b7e59e..6c93c74 100644
---- a/src/3rdparty/angle/src/libGLESv2/Context.h
-+++ b/src/3rdparty/angle/src/libGLESv2/Context.h
-@@ -11,7 +11,6 @@
- #define LIBGLESV2_CONTEXT_H_
-
- #include "angle_gl.h"
--#include <EGL/egl.h>
-
- #include <string>
- #include <set>
-diff --git a/src/3rdparty/angle/src/libGLESv2/formatutils.h b/src/3rdparty/angle/src/libGLESv2/formatutils.h
-index fb4d2a3..2f59279 100644
---- a/src/3rdparty/angle/src/libGLESv2/formatutils.h
-+++ b/src/3rdparty/angle/src/libGLESv2/formatutils.h
-@@ -85,4 +85,4 @@ ColorWriteFunction GetColorWriteFunction(GLenum format, GLenum type);
+@@ -30,6 +34,7 @@
+ #include "libGLESv2/validationES3.h"
+ #include "libGLESv2/queryconversions.h"
- }
++
+ extern "C"
+ {
--#endif LIBGLESV2_FORMATUTILS_H_
-+#endif // LIBGLESV2_FORMATUTILS_H_
-diff --git a/src/3rdparty/angle/src/libGLESv2/main.h b/src/3rdparty/angle/src/libGLESv2/main.h
-index 372b03f..c117039 100644
---- a/src/3rdparty/angle/src/libGLESv2/main.h
-+++ b/src/3rdparty/angle/src/libGLESv2/main.h
-@@ -10,6 +10,9 @@
- #define LIBGLESV2_MAIN_H_
+diff --git a/src/3rdparty/angle/src/libGLESv2/libGLESv2.def b/src/3rdparty/angle/src/libGLESv2/libGLESv2.def
+index 88dceb3..33557eb 100644
+--- a/src/3rdparty/angle/src/libGLESv2/libGLESv2.def
++++ b/src/3rdparty/angle/src/libGLESv2/libGLESv2.def
+@@ -294,6 +294,3 @@ EXPORTS
+ glBindTexImage @158 NONAME
+ glCreateRenderer @177 NONAME
+ glDestroyRenderer @178 NONAME
+-
+- ; Setting up TRACE macro callbacks
+- SetTraceFunctionPointers @284
+diff --git a/src/3rdparty/angle/src/libGLESv2/libGLESv2_mingw32.def b/src/3rdparty/angle/src/libGLESv2/libGLESv2_mingw32.def
+index d6272c4d..18ffcf6 100644
+--- a/src/3rdparty/angle/src/libGLESv2/libGLESv2_mingw32.def
++++ b/src/3rdparty/angle/src/libGLESv2/libGLESv2_mingw32.def
+@@ -294,6 +294,3 @@ EXPORTS
+ glBindTexImage@4 @158 NONAME
+ glCreateRenderer @177 NONAME
+ glDestroyRenderer @178 NONAME
+-
+- ; Setting up TRACE macro callbacks
+- SetTraceFunctionPointers@8 @284
+diff --git a/src/3rdparty/angle/src/libGLESv2/libGLESv2d.def b/src/3rdparty/angle/src/libGLESv2/libGLESv2d.def
+index d301aa0..120371e 100644
+--- a/src/3rdparty/angle/src/libGLESv2/libGLESv2d.def
++++ b/src/3rdparty/angle/src/libGLESv2/libGLESv2d.def
+@@ -294,6 +294,3 @@ EXPORTS
+ glBindTexImage @158 NONAME
+ glCreateRenderer @177 NONAME
+ glDestroyRenderer @178 NONAME
+-
+- ; Setting up TRACE macro callbacks
+- SetTraceFunctionPointers @284
+diff --git a/src/3rdparty/angle/src/libGLESv2/libGLESv2d_mingw32.def b/src/3rdparty/angle/src/libGLESv2/libGLESv2d_mingw32.def
+index a82d629..8c1306a 100644
+--- a/src/3rdparty/angle/src/libGLESv2/libGLESv2d_mingw32.def
++++ b/src/3rdparty/angle/src/libGLESv2/libGLESv2d_mingw32.def
+@@ -294,6 +294,3 @@ EXPORTS
+ glBindTexImage@4 @158 NONAME
+ glCreateRenderer @177 NONAME
+ glDestroyRenderer @178 NONAME
+-
+- ; Setting up TRACE macro callbacks
+- SetTraceFunctionPointers@8 @284
+diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp
+index df43012..910d028 100644
+--- a/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp
++++ b/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp
+@@ -10,7 +10,6 @@
+ #include "libGLESv2/Program.h"
+ #include "libGLESv2/renderer/Renderer.h"
+ #include "common/utilities.h"
+-#include "third_party/trace_event/trace_event.h"
+ #include "libGLESv2/Shader.h"
- #include "common/debug.h"
-+#undef EGLAPI
-+#define EGLAPI
-+#include <EGL/egl.h>
+ #if defined (ANGLE_ENABLE_D3D9)
+diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/SwapChain.h b/src/3rdparty/angle/src/libGLESv2/renderer/SwapChain.h
+index c53b2af..12be9b3 100644
+--- a/src/3rdparty/angle/src/libGLESv2/renderer/SwapChain.h
++++ b/src/3rdparty/angle/src/libGLESv2/renderer/SwapChain.h
+@@ -16,10 +16,6 @@
+ #include <GLES2/gl2.h>
+ #include <EGL/egl.h>
- namespace egl
+-#if !defined(ANGLE_FORCE_VSYNC_OFF)
+-#define ANGLE_FORCE_VSYNC_OFF 0
+-#endif
+-
+ namespace rx
{
-diff --git a/src/3rdparty/angle/src/libGLESv2/precompiled.h b/src/3rdparty/angle/src/libGLESv2/precompiled.h
-index cc935a1..0404eab 100644
---- a/src/3rdparty/angle/src/libGLESv2/precompiled.h
-+++ b/src/3rdparty/angle/src/libGLESv2/precompiled.h
-@@ -29,3 +29,4 @@
- #include <string>
- #include <unordered_map>
- #include <vector>
-+#include <iterator>
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/IndexRangeCache.h b/src/3rdparty/angle/src/libGLESv2/renderer/IndexRangeCache.h
-index 4318e2b..837a44a 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/IndexRangeCache.h
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/IndexRangeCache.h
-@@ -56,4 +56,4 @@ class IndexRangeCache
-
- }
--#endif LIBGLESV2_RENDERER_INDEXRANGECACHE_H
-+#endif // LIBGLESV2_RENDERER_INDEXRANGECACHE_H
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.h b/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.h
-index f1c7b49..be3ba29 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.h
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.h
-@@ -15,6 +15,7 @@
- #include "libGLESv2/Caps.h"
-
- #if !defined(ANGLE_COMPILE_OPTIMIZATION_LEVEL)
-+#include <d3dcompiler.h>
- // WARNING: D3DCOMPILE_OPTIMIZATION_LEVEL3 may lead to a DX9 shader compiler hang.
- // It should only be used selectively to work around specific bugs.
- #define ANGLE_COMPILE_OPTIMIZATION_LEVEL D3DCOMPILE_OPTIMIZATION_LEVEL1
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/copyimage.h b/src/3rdparty/angle/src/libGLESv2/renderer/copyimage.h
-index 2f37e1c..9b94404 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/copyimage.h
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/copyimage.h
-@@ -30,7 +30,7 @@ void WriteColor(const void *source, void *dest)
- template <typename sourceType, typename destType, typename colorDataType>
- void CopyPixel(const void *source, void *dest)
- {
-- colorType temp;
-+ colorDataType temp;
- ReadColor<sourceType, colorDataType>(source, &temp);
- WriteColor<destType, colorDataType>(&temp, dest);
- }
diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp
-index 5613919..499ed52 100644
+index df2e46c..acbd852 100644
--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp
+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/HLSLCompiler.cpp
-@@ -7,6 +7,8 @@
+@@ -10,8 +10,6 @@
- #include "third_party/trace_event/trace_event.h"
+ #include "common/utilities.h"
-+#include <d3dcompiler.h>
-+
+-#include "third_party/trace_event/trace_event.h"
+-
namespace rx
{
+@@ -28,7 +26,11 @@ HLSLCompiler::~HLSLCompiler()
+
+ bool HLSLCompiler::initialize()
+ {
++<<<<<<< HEAD
+ TRACE_EVENT0("gpu", "initializeCompiler");
++=======
++#if !defined(ANGLE_PLATFORM_WINRT)
++>>>>>>> 429814a... ANGLE: remove event tracing
+ #if defined(ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES)
+ // Find a D3DCompiler module that had already been loaded based on a predefined list of versions.
+ static const char *d3dCompilerNames[] = ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES;
diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp
-index 446149c..79a6543 100644
+index 3bdb9e7..72820a4 100644
--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp
+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Blit11.cpp
-@@ -14,39 +14,39 @@
- #include "libGLESv2/renderer/d3d/d3d11/renderer11_utils.h"
- #include "libGLESv2/renderer/d3d/d3d11/formatutils11.h"
+@@ -13,39 +13,39 @@
+ #include "libGLESv2/main.h"
+ #include "libGLESv2/formatutils.h"
-#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthrough2d11vs.h"
-#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughdepth2d11ps.h"
@@ -341,13 +394,13 @@ index 446149c..79a6543 100644
#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/swizzlef2dps.h"
#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/swizzlei2dps.h"
diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp
-index 656cd94..9cd0b7d 100644
+index c60b7a6..5caa427 100644
--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp
+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Clear11.cpp
-@@ -16,14 +16,14 @@
- #include "libGLESv2/Framebuffer.h"
+@@ -15,14 +15,14 @@
#include "libGLESv2/FramebufferAttachment.h"
+ // Precompiled shaders
-#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearfloat11vs.h"
-#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearfloat11ps.h"
+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/clearfloatvs.h"
@@ -366,10 +419,10 @@ index 656cd94..9cd0b7d 100644
namespace rx
{
diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp
-index 1ca456c..67540bb 100644
+index f54bacc..edaafec 100644
--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp
+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/PixelTransfer11.cpp
-@@ -23,11 +23,11 @@
+@@ -22,11 +22,11 @@
#include "libGLESv2/Context.h"
// Precompiled shaders
@@ -387,13 +440,13 @@ index 1ca456c..67540bb 100644
namespace rx
{
diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp
-index ed0c4ae..98166f0 100644
+index 5ec132e..50dae4e 100644
--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp
+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/SwapChain11.cpp
@@ -12,8 +12,8 @@
- #include "libGLESv2/renderer/d3d/d3d11/renderer11_utils.h"
- #include "libGLESv2/renderer/d3d/d3d11/formatutils11.h"
#include "libGLESv2/renderer/d3d/d3d11/Renderer11.h"
+
+ // Precompiled shaders
-#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthrough2d11vs.h"
-#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthroughrgba2d11ps.h"
+#include "libGLESv2/renderer/d3d/d3d11/shaders/compiled/passthrough2dvs.h"
@@ -401,15 +454,6 @@ index ed0c4ae..98166f0 100644
namespace rx
{
-@@ -584,7 +584,7 @@ EGLint SwapChain11::swapRect(EGLint x, EGLint y, EGLint width, EGLint height)
- // Draw
- deviceContext->Draw(4, 0);
-
--#ifdef ANGLE_FORCE_VSYNC_OFF
-+#if ANGLE_FORCE_VSYNC_OFF
- result = mSwapChain->Present(0, 0);
- #else
- result = mSwapChain->Present(mSwapInterval, 0);
diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/shaders/Clear11.hlsl b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/shaders/Clear11.hlsl
index 6deef2b..b4cf380 100644
--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/shaders/Clear11.hlsl
@@ -441,10 +485,10 @@ index 6deef2b..b4cf380 100644
}
diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Blit9.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Blit9.cpp
-index 2d72729..f486e5a 100644
+index 80503d5..f061a32 100644
--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Blit9.cpp
+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Blit9.cpp
-@@ -28,20 +28,20 @@ namespace
+@@ -27,20 +27,20 @@ namespace
const BYTE* const g_shaderCode[] =
{
@@ -476,40 +520,95 @@ index 2d72729..f486e5a 100644
}
diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
-index 69c3feb..491c27a 100644
+index 73c1abc..e8564bd 100644
--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
-@@ -205,7 +205,7 @@ EGLint Renderer9::initialize()
+@@ -39,8 +39,6 @@
+
+ #include "common/utilities.h"
+
+-#include "third_party/trace_event/trace_event.h"
+-
+ #include <sstream>
+
+ // Can also be enabled by defining FORCE_REF_RAST in the project's predefined macros
+@@ -190,7 +188,6 @@ EGLint Renderer9::initialize()
+ return EGL_NOT_INITIALIZED;
+ }
+
+- TRACE_EVENT0("gpu", "GetModuleHandle_d3d9");
+ mD3d9Module = GetModuleHandle(TEXT("d3d9.dll"));
+
+ if (mD3d9Module == NULL)
+@@ -207,14 +204,12 @@ EGLint Renderer9::initialize()
+ // 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)))
{
- TRACE_EVENT0("gpu", "D3d9Ex_QueryInterface");
+- TRACE_EVENT0("gpu", "D3d9Ex_QueryInterface");
ASSERT(mD3d9Ex);
-- mD3d9Ex->QueryInterface(__uuidof(IDirect3D9), reinterpret_cast<void**>(&mD3d9));
-+ mD3d9Ex->QueryInterface(IID_IDirect3D9, reinterpret_cast<void**>(&mD3d9));
+ mD3d9Ex->QueryInterface(__uuidof(IDirect3D9), reinterpret_cast<void**>(&mD3d9));
ASSERT(mD3d9);
}
else
-@@ -343,7 +343,7 @@ EGLint Renderer9::initialize()
+ {
+- TRACE_EVENT0("gpu", "Direct3DCreate9");
+ mD3d9 = Direct3DCreate9(D3D_SDK_VERSION);
+ }
+
+@@ -233,7 +228,6 @@ EGLint Renderer9::initialize()
+
+ // Give up on getting device caps after about one second.
+ {
+- TRACE_EVENT0("gpu", "GetDeviceCaps");
+ for (int i = 0; i < 10; ++i)
+ {
+ result = mD3d9->GetDeviceCaps(mAdapter, mDeviceType, &mDeviceCaps);
+@@ -268,7 +262,6 @@ EGLint Renderer9::initialize()
+ }
+
+ {
+- TRACE_EVENT0("gpu", "GetAdapterIdentifier");
+ mD3d9->GetAdapterIdentifier(mAdapter, 0, &mAdapterIdentifier);
+ }
+
+@@ -305,7 +298,6 @@ EGLint Renderer9::initialize()
+ static const TCHAR className[] = TEXT("STATIC");
+
+ {
+- 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);
+ }
+
+@@ -313,7 +305,6 @@ EGLint Renderer9::initialize()
+ DWORD behaviorFlags = D3DCREATE_FPU_PRESERVE | D3DCREATE_NOWINDOWCHANGES;
+
+ {
+- 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)
+@@ -323,7 +314,6 @@ EGLint Renderer9::initialize()
+
+ if (FAILED(result))
+ {
+- TRACE_EVENT0("gpu", "D3d9_CreateDevice2");
+ result = mD3d9->CreateDevice(mAdapter, mDeviceType, mDeviceWindow, behaviorFlags | D3DCREATE_SOFTWARE_VERTEXPROCESSING, &presentParameters, &mDevice);
+
+ if (FAILED(result))
+@@ -335,13 +325,11 @@ EGLint Renderer9::initialize()
+
if (mD3d9Ex)
{
- TRACE_EVENT0("gpu", "mDevice_QueryInterface");
-- result = mDevice->QueryInterface(__uuidof(IDirect3DDevice9Ex), (void**)&mDeviceEx);
-+ result = mDevice->QueryInterface(IID_IDirect3DDevice9Ex, (void**)&mDeviceEx);
+- TRACE_EVENT0("gpu", "mDevice_QueryInterface");
+ result = mDevice->QueryInterface(__uuidof(IDirect3DDevice9Ex), (void**)&mDeviceEx);
ASSERT(SUCCEEDED(result));
}
-diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/SwapChain9.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/SwapChain9.cpp
-index aef80a7..4a17acf 100644
---- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/SwapChain9.cpp
-+++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/SwapChain9.cpp
-@@ -50,7 +50,7 @@ void SwapChain9::release()
-
- static DWORD convertInterval(EGLint interval)
- {
--#ifdef ANGLE_FORCE_VSYNC_OFF
-+#if ANGLE_FORCE_VSYNC_OFF
- return D3DPRESENT_INTERVAL_IMMEDIATE;
- #else
- switch(interval)
+ {
+- TRACE_EVENT0("gpu", "ShaderCache initialize");
+ mVertexShaderCache.initialize(mDevice);
+ mPixelShaderCache.initialize(mDevice);
+ }
diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/shaders/Blit.ps b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/shaders/Blit.ps
index dc357d0..eb43eb3 100644
--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/shaders/Blit.ps
@@ -563,6 +662,858 @@ index 3a36980..3bd611b 100644
{
VS_OUTPUT Out;
+diff --git a/src/3rdparty/angle/src/third_party/trace_event/trace_event.h b/src/3rdparty/angle/src/third_party/trace_event/trace_event.h
+deleted file mode 100644
+index 1880056..0000000
+--- a/src/3rdparty/angle/src/third_party/trace_event/trace_event.h
++++ /dev/null
+@@ -1,826 +0,0 @@
+-// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+-// Use of this source code is governed by a BSD-style license that can be
+-// found in the LICENSE file.
+-
+-// Trace events are for tracking application performance and resource usage.
+-// Macros are provided to track:
+-// Begin and end of function calls
+-// Counters
+-//
+-// Events are issued against categories. Whereas LOG's
+-// categories are statically defined, TRACE categories are created
+-// implicitly with a string. For example:
+-// TRACE_EVENT_INSTANT0("MY_SUBSYSTEM", "SomeImportantEvent")
+-//
+-// Events can be INSTANT, or can be pairs of BEGIN and END in the same scope:
+-// TRACE_EVENT_BEGIN0("MY_SUBSYSTEM", "SomethingCostly")
+-// doSomethingCostly()
+-// TRACE_EVENT_END0("MY_SUBSYSTEM", "SomethingCostly")
+-// Note: our tools can't always determine the correct BEGIN/END pairs unless
+-// these are used in the same scope. Use ASYNC_BEGIN/ASYNC_END macros if you need them
+-// to be in separate scopes.
+-//
+-// A common use case is to trace entire function scopes. This
+-// issues a trace BEGIN and END automatically:
+-// void doSomethingCostly() {
+-// TRACE_EVENT0("MY_SUBSYSTEM", "doSomethingCostly");
+-// ...
+-// }
+-//
+-// Additional parameters can be associated with an event:
+-// void doSomethingCostly2(int howMuch) {
+-// TRACE_EVENT1("MY_SUBSYSTEM", "doSomethingCostly",
+-// "howMuch", howMuch);
+-// ...
+-// }
+-//
+-// The trace system will automatically add to this information the
+-// current process id, thread id, and a timestamp in microseconds.
+-//
+-// To trace an asynchronous procedure such as an IPC send/receive, use ASYNC_BEGIN and
+-// ASYNC_END:
+-// [single threaded sender code]
+-// static int send_count = 0;
+-// ++send_count;
+-// TRACE_EVENT_ASYNC_BEGIN0("ipc", "message", send_count);
+-// Send(new MyMessage(send_count));
+-// [receive code]
+-// void OnMyMessage(send_count) {
+-// TRACE_EVENT_ASYNC_END0("ipc", "message", send_count);
+-// }
+-// The third parameter is a unique ID to match ASYNC_BEGIN/ASYNC_END pairs.
+-// ASYNC_BEGIN and ASYNC_END can occur on any thread of any traced process. Pointers can
+-// be used for the ID parameter, and they will be mangled internally so that
+-// the same pointer on two different processes will not match. For example:
+-// class MyTracedClass {
+-// public:
+-// MyTracedClass() {
+-// TRACE_EVENT_ASYNC_BEGIN0("category", "MyTracedClass", this);
+-// }
+-// ~MyTracedClass() {
+-// TRACE_EVENT_ASYNC_END0("category", "MyTracedClass", this);
+-// }
+-// }
+-//
+-// Trace event also supports counters, which is a way to track a quantity
+-// as it varies over time. Counters are created with the following macro:
+-// TRACE_COUNTER1("MY_SUBSYSTEM", "myCounter", g_myCounterValue);
+-//
+-// Counters are process-specific. The macro itself can be issued from any
+-// thread, however.
+-//
+-// Sometimes, you want to track two counters at once. You can do this with two
+-// counter macros:
+-// TRACE_COUNTER1("MY_SUBSYSTEM", "myCounter0", g_myCounterValue[0]);
+-// TRACE_COUNTER1("MY_SUBSYSTEM", "myCounter1", g_myCounterValue[1]);
+-// Or you can do it with a combined macro:
+-// TRACE_COUNTER2("MY_SUBSYSTEM", "myCounter",
+-// "bytesPinned", g_myCounterValue[0],
+-// "bytesAllocated", g_myCounterValue[1]);
+-// This indicates to the tracing UI that these counters should be displayed
+-// in a single graph, as a summed area chart.
+-//
+-// Since counters are in a global namespace, you may want to disembiguate with a
+-// unique ID, by using the TRACE_COUNTER_ID* variations.
+-//
+-// By default, trace collection is compiled in, but turned off at runtime.
+-// Collecting trace data is the responsibility of the embedding
+-// application. In Chrome's case, navigating to about:tracing will turn on
+-// tracing and display data collected across all active processes.
+-//
+-//
+-// Memory scoping note:
+-// Tracing copies the pointers, not the string content, of the strings passed
+-// in for category, name, and arg_names. Thus, the following code will
+-// cause problems:
+-// char* str = strdup("impprtantName");
+-// TRACE_EVENT_INSTANT0("SUBSYSTEM", str); // BAD!
+-// free(str); // Trace system now has dangling pointer
+-//
+-// To avoid this issue with the |name| and |arg_name| parameters, use the
+-// TRACE_EVENT_COPY_XXX overloads of the macros at additional runtime overhead.
+-// Notes: The category must always be in a long-lived char* (i.e. static const).
+-// The |arg_values|, when used, are always deep copied with the _COPY
+-// macros.
+-//
+-// When are string argument values copied:
+-// const char* arg_values are only referenced by default:
+-// TRACE_EVENT1("category", "name",
+-// "arg1", "literal string is only referenced");
+-// Use TRACE_STR_COPY to force copying of a const char*:
+-// TRACE_EVENT1("category", "name",
+-// "arg1", TRACE_STR_COPY("string will be copied"));
+-// std::string arg_values are always copied:
+-// TRACE_EVENT1("category", "name",
+-// "arg1", std::string("string will be copied"));
+-//
+-//
+-// Thread Safety:
+-// A thread safe singleton and mutex are used for thread safety. Category
+-// enabled flags are used to limit the performance impact when the system
+-// is not enabled.
+-//
+-// TRACE_EVENT macros first cache a pointer to a category. The categories are
+-// statically allocated and safe at all times, even after exit. Fetching a
+-// category is protected by the TraceLog::lock_. Multiple threads initializing
+-// the static variable is safe, as they will be serialized by the lock and
+-// multiple calls will return the same pointer to the category.
+-//
+-// Then the category_enabled flag is checked. This is a unsigned char, and
+-// not intended to be multithread safe. It optimizes access to addTraceEvent
+-// which is threadsafe internally via TraceLog::lock_. The enabled flag may
+-// cause some threads to incorrectly call or skip calling addTraceEvent near
+-// the time of the system being enabled or disabled. This is acceptable as
+-// we tolerate some data loss while the system is being enabled/disabled and
+-// because addTraceEvent is threadsafe internally and checks the enabled state
+-// again under lock.
+-//
+-// Without the use of these static category pointers and enabled flags all
+-// trace points would carry a significant performance cost of aquiring a lock
+-// and resolving the category.
+-
+-#ifndef COMMON_TRACE_EVENT_H_
+-#define COMMON_TRACE_EVENT_H_
+-
+-#include <string>
+-
+-#include "common/event_tracer.h"
+-
+-// By default, const char* argument values are assumed to have long-lived scope
+-// and will not be copied. Use this macro to force a const char* to be copied.
+-#define TRACE_STR_COPY(str) \
+- WebCore::TraceEvent::TraceStringWithCopy(str)
+-
+-// Records a pair of begin and end events called "name" for the current
+-// scope, with 0, 1 or 2 associated arguments. If the category is not
+-// enabled, then this does nothing.
+-// - category and name strings must have application lifetime (statics or
+-// literals). They may not include " chars.
+-#define TRACE_EVENT0(category, name) \
+- INTERNAL_TRACE_EVENT_ADD_SCOPED(category, name)
+-#define TRACE_EVENT1(category, name, arg1_name, arg1_val) \
+- INTERNAL_TRACE_EVENT_ADD_SCOPED(category, name, arg1_name, arg1_val)
+-#define TRACE_EVENT2(category, name, arg1_name, arg1_val, arg2_name, arg2_val) \
+- INTERNAL_TRACE_EVENT_ADD_SCOPED(category, name, arg1_name, arg1_val, \
+- arg2_name, arg2_val)
+-
+-// Records a single event called "name" immediately, with 0, 1 or 2
+-// associated arguments. If the category is not enabled, then this
+-// does nothing.
+-// - category and name strings must have application lifetime (statics or
+-// literals). They may not include " chars.
+-#define TRACE_EVENT_INSTANT0(category, name) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
+- category, name, TRACE_EVENT_FLAG_NONE)
+-#define TRACE_EVENT_INSTANT1(category, name, arg1_name, arg1_val) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
+- category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
+-#define TRACE_EVENT_INSTANT2(category, name, arg1_name, arg1_val, \
+- arg2_name, arg2_val) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
+- category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, \
+- arg2_name, arg2_val)
+-#define TRACE_EVENT_COPY_INSTANT0(category, name) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
+- category, name, TRACE_EVENT_FLAG_COPY)
+-#define TRACE_EVENT_COPY_INSTANT1(category, name, arg1_name, arg1_val) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
+- category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
+-#define TRACE_EVENT_COPY_INSTANT2(category, name, arg1_name, arg1_val, \
+- arg2_name, arg2_val) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, \
+- category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
+- arg2_name, arg2_val)
+-
+-// Records a single BEGIN event called "name" immediately, with 0, 1 or 2
+-// associated arguments. If the category is not enabled, then this
+-// does nothing.
+-// - category and name strings must have application lifetime (statics or
+-// literals). They may not include " chars.
+-#define TRACE_EVENT_BEGIN0(category, name) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
+- category, name, TRACE_EVENT_FLAG_NONE)
+-#define TRACE_EVENT_BEGIN1(category, name, arg1_name, arg1_val) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
+- category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
+-#define TRACE_EVENT_BEGIN2(category, name, arg1_name, arg1_val, \
+- arg2_name, arg2_val) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
+- category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, \
+- arg2_name, arg2_val)
+-#define TRACE_EVENT_COPY_BEGIN0(category, name) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
+- category, name, TRACE_EVENT_FLAG_COPY)
+-#define TRACE_EVENT_COPY_BEGIN1(category, name, arg1_name, arg1_val) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
+- category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
+-#define TRACE_EVENT_COPY_BEGIN2(category, name, arg1_name, arg1_val, \
+- arg2_name, arg2_val) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, \
+- category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
+- arg2_name, arg2_val)
+-
+-// Records a single END event for "name" immediately. If the category
+-// is not enabled, then this does nothing.
+-// - category and name strings must have application lifetime (statics or
+-// literals). They may not include " chars.
+-#define TRACE_EVENT_END0(category, name) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
+- category, name, TRACE_EVENT_FLAG_NONE)
+-#define TRACE_EVENT_END1(category, name, arg1_name, arg1_val) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
+- category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
+-#define TRACE_EVENT_END2(category, name, arg1_name, arg1_val, \
+- arg2_name, arg2_val) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
+- category, name, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, \
+- arg2_name, arg2_val)
+-#define TRACE_EVENT_COPY_END0(category, name) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
+- category, name, TRACE_EVENT_FLAG_COPY)
+-#define TRACE_EVENT_COPY_END1(category, name, arg1_name, arg1_val) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
+- category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
+-#define TRACE_EVENT_COPY_END2(category, name, arg1_name, arg1_val, \
+- arg2_name, arg2_val) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, \
+- category, name, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
+- arg2_name, arg2_val)
+-
+-// Records the value of a counter called "name" immediately. Value
+-// must be representable as a 32 bit integer.
+-// - category and name strings must have application lifetime (statics or
+-// literals). They may not include " chars.
+-#define TRACE_COUNTER1(category, name, value) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, \
+- category, name, TRACE_EVENT_FLAG_NONE, \
+- "value", static_cast<int>(value))
+-#define TRACE_COPY_COUNTER1(category, name, value) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, \
+- category, name, TRACE_EVENT_FLAG_COPY, \
+- "value", static_cast<int>(value))
+-
+-// Records the values of a multi-parted counter called "name" immediately.
+-// The UI will treat value1 and value2 as parts of a whole, displaying their
+-// values as a stacked-bar chart.
+-// - category and name strings must have application lifetime (statics or
+-// literals). They may not include " chars.
+-#define TRACE_COUNTER2(category, name, value1_name, value1_val, \
+- value2_name, value2_val) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, \
+- category, name, TRACE_EVENT_FLAG_NONE, \
+- value1_name, static_cast<int>(value1_val), \
+- value2_name, static_cast<int>(value2_val))
+-#define TRACE_COPY_COUNTER2(category, name, value1_name, value1_val, \
+- value2_name, value2_val) \
+- INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, \
+- category, name, TRACE_EVENT_FLAG_COPY, \
+- value1_name, static_cast<int>(value1_val), \
+- value2_name, static_cast<int>(value2_val))
+-
+-// Records the value of a counter called "name" immediately. Value
+-// must be representable as a 32 bit integer.
+-// - category and name strings must have application lifetime (statics or
+-// literals). They may not include " chars.
+-// - |id| is used to disambiguate counters with the same name. It must either
+-// be a pointer or an integer value up to 64 bits. If it's a pointer, the bits
+-// will be xored with a hash of the process ID so that the same pointer on
+-// two different processes will not collide.
+-#define TRACE_COUNTER_ID1(category, name, id, value) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, \
+- category, name, id, TRACE_EVENT_FLAG_NONE, \
+- "value", static_cast<int>(value))
+-#define TRACE_COPY_COUNTER_ID1(category, name, id, value) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, \
+- category, name, id, TRACE_EVENT_FLAG_COPY, \
+- "value", static_cast<int>(value))
+-
+-// Records the values of a multi-parted counter called "name" immediately.
+-// The UI will treat value1 and value2 as parts of a whole, displaying their
+-// values as a stacked-bar chart.
+-// - category and name strings must have application lifetime (statics or
+-// literals). They may not include " chars.
+-// - |id| is used to disambiguate counters with the same name. It must either
+-// be a pointer or an integer value up to 64 bits. If it's a pointer, the bits
+-// will be xored with a hash of the process ID so that the same pointer on
+-// two different processes will not collide.
+-#define TRACE_COUNTER_ID2(category, name, id, value1_name, value1_val, \
+- value2_name, value2_val) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, \
+- category, name, id, TRACE_EVENT_FLAG_NONE, \
+- value1_name, static_cast<int>(value1_val), \
+- value2_name, static_cast<int>(value2_val))
+-#define TRACE_COPY_COUNTER_ID2(category, name, id, value1_name, value1_val, \
+- value2_name, value2_val) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, \
+- category, name, id, TRACE_EVENT_FLAG_COPY, \
+- value1_name, static_cast<int>(value1_val), \
+- value2_name, static_cast<int>(value2_val))
+-
+-// Records a single ASYNC_BEGIN event called "name" immediately, with 0, 1 or 2
+-// associated arguments. If the category is not enabled, then this
+-// does nothing.
+-// - category and name strings must have application lifetime (statics or
+-// literals). They may not include " chars.
+-// - |id| is used to match the ASYNC_BEGIN event with the ASYNC_END event. ASYNC
+-// events are considered to match if their category, name and id values all
+-// match. |id| must either be a pointer or an integer value up to 64 bits. If
+-// it's a pointer, the bits will be xored with a hash of the process ID so
+-// that the same pointer on two different processes will not collide.
+-// An asynchronous operation can consist of multiple phases. The first phase is
+-// defined by the ASYNC_BEGIN calls. Additional phases can be defined using the
+-// ASYNC_STEP_BEGIN macros. When the operation completes, call ASYNC_END.
+-// An async operation can span threads and processes, but all events in that
+-// operation must use the same |name| and |id|. Each event can have its own
+-// args.
+-#define TRACE_EVENT_ASYNC_BEGIN0(category, name, id) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
+- category, name, id, TRACE_EVENT_FLAG_NONE)
+-#define TRACE_EVENT_ASYNC_BEGIN1(category, name, id, arg1_name, arg1_val) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
+- category, name, id, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
+-#define TRACE_EVENT_ASYNC_BEGIN2(category, name, id, arg1_name, arg1_val, \
+- arg2_name, arg2_val) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
+- category, name, id, TRACE_EVENT_FLAG_NONE, \
+- arg1_name, arg1_val, arg2_name, arg2_val)
+-#define TRACE_EVENT_COPY_ASYNC_BEGIN0(category, name, id) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
+- category, name, id, TRACE_EVENT_FLAG_COPY)
+-#define TRACE_EVENT_COPY_ASYNC_BEGIN1(category, name, id, arg1_name, arg1_val) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
+- category, name, id, TRACE_EVENT_FLAG_COPY, \
+- arg1_name, arg1_val)
+-#define TRACE_EVENT_COPY_ASYNC_BEGIN2(category, name, id, arg1_name, arg1_val, \
+- arg2_name, arg2_val) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
+- category, name, id, TRACE_EVENT_FLAG_COPY, \
+- arg1_name, arg1_val, arg2_name, arg2_val)
+-
+-// Records a single ASYNC_STEP event for |step| immediately. If the category
+-// is not enabled, then this does nothing. The |name| and |id| must match the
+-// ASYNC_BEGIN event above. The |step| param identifies this step within the
+-// async event. This should be called at the beginning of the next phase of an
+-// asynchronous operation.
+-#define TRACE_EVENT_ASYNC_STEP0(category, name, id, step) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, \
+- category, name, id, TRACE_EVENT_FLAG_NONE, "step", step)
+-#define TRACE_EVENT_ASYNC_STEP1(category, name, id, step, \
+- arg1_name, arg1_val) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, \
+- category, name, id, TRACE_EVENT_FLAG_NONE, "step", step, \
+- arg1_name, arg1_val)
+-#define TRACE_EVENT_COPY_ASYNC_STEP0(category, name, id, step) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, \
+- category, name, id, TRACE_EVENT_FLAG_COPY, "step", step)
+-#define TRACE_EVENT_COPY_ASYNC_STEP1(category, name, id, step, \
+- arg1_name, arg1_val) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_STEP, \
+- category, name, id, TRACE_EVENT_FLAG_COPY, "step", step, \
+- arg1_name, arg1_val)
+-
+-// Records a single ASYNC_END event for "name" immediately. If the category
+-// is not enabled, then this does nothing.
+-#define TRACE_EVENT_ASYNC_END0(category, name, id) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
+- category, name, id, TRACE_EVENT_FLAG_NONE)
+-#define TRACE_EVENT_ASYNC_END1(category, name, id, arg1_name, arg1_val) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
+- category, name, id, TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val)
+-#define TRACE_EVENT_ASYNC_END2(category, name, id, arg1_name, arg1_val, \
+- arg2_name, arg2_val) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
+- category, name, id, TRACE_EVENT_FLAG_NONE, \
+- arg1_name, arg1_val, arg2_name, arg2_val)
+-#define TRACE_EVENT_COPY_ASYNC_END0(category, name, id) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
+- category, name, id, TRACE_EVENT_FLAG_COPY)
+-#define TRACE_EVENT_COPY_ASYNC_END1(category, name, id, arg1_name, arg1_val) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
+- category, name, id, TRACE_EVENT_FLAG_COPY, \
+- arg1_name, arg1_val)
+-#define TRACE_EVENT_COPY_ASYNC_END2(category, name, id, arg1_name, arg1_val, \
+- arg2_name, arg2_val) \
+- INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
+- category, name, id, TRACE_EVENT_FLAG_COPY, \
+- arg1_name, arg1_val, arg2_name, arg2_val)
+-
+-// Creates a scope of a sampling state with the given category and name (both must
+-// be constant strings). These states are intended for a sampling profiler.
+-// Implementation note: we store category and name together because we don't
+-// want the inconsistency/expense of storing two pointers.
+-// |thread_bucket| is [0..2] and is used to statically isolate samples in one
+-// thread from others.
+-//
+-// { // The sampling state is set within this scope.
+-// TRACE_EVENT_SAMPLING_STATE_SCOPE_FOR_BUCKET(0, "category", "name");
+-// ...;
+-// }
+-#define TRACE_EVENT_SCOPED_SAMPLING_STATE_FOR_BUCKET(bucket_number, category, name) \
+- TraceEvent::SamplingStateScope<bucket_number> traceEventSamplingScope(category "\0" name);
+-
+-// Returns a current sampling state of the given bucket.
+-// The format of the returned string is "category\0name".
+-#define TRACE_EVENT_GET_SAMPLING_STATE_FOR_BUCKET(bucket_number) \
+- TraceEvent::SamplingStateScope<bucket_number>::current()
+-
+-// Sets a current sampling state of the given bucket.
+-// |category| and |name| have to be constant strings.
+-#define TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(bucket_number, category, name) \
+- TraceEvent::SamplingStateScope<bucket_number>::set(category "\0" name)
+-
+-// Sets a current sampling state of the given bucket.
+-// |categoryAndName| doesn't need to be a constant string.
+-// The format of the string is "category\0name".
+-#define TRACE_EVENT_SET_NONCONST_SAMPLING_STATE_FOR_BUCKET(bucket_number, categoryAndName) \
+- TraceEvent::SamplingStateScope<bucket_number>::set(categoryAndName)
+-
+-// Syntactic sugars for the sampling tracing in the main thread.
+-#define TRACE_EVENT_SCOPED_SAMPLING_STATE(category, name) \
+- TRACE_EVENT_SCOPED_SAMPLING_STATE_FOR_BUCKET(0, category, name)
+-#define TRACE_EVENT_GET_SAMPLING_STATE() \
+- TRACE_EVENT_GET_SAMPLING_STATE_FOR_BUCKET(0)
+-#define TRACE_EVENT_SET_SAMPLING_STATE(category, name) \
+- TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(0, category, name)
+-#define TRACE_EVENT_SET_NONCONST_SAMPLING_STATE(categoryAndName) \
+- TRACE_EVENT_SET_NONCONST_SAMPLING_STATE_FOR_BUCKET(0, categoryAndName)
+-
+-////////////////////////////////////////////////////////////////////////////////
+-// Implementation specific tracing API definitions.
+-
+-// Get a pointer to the enabled state of the given trace category. Only
+-// long-lived literal strings should be given as the category name. The returned
+-// pointer can be held permanently in a local static for example. If the
+-// unsigned char is non-zero, tracing is enabled. If tracing is enabled,
+-// TRACE_EVENT_API_ADD_TRACE_EVENT can be called. It's OK if tracing is disabled
+-// between the load of the tracing state and the call to
+-// TRACE_EVENT_API_ADD_TRACE_EVENT, because this flag only provides an early out
+-// for best performance when tracing is disabled.
+-// const unsigned char*
+-// TRACE_EVENT_API_GET_CATEGORY_ENABLED(const char* category_name)
+-#define TRACE_EVENT_API_GET_CATEGORY_ENABLED \
+- gl::TraceGetTraceCategoryEnabledFlag
+-
+-// Add a trace event to the platform tracing system.
+-// void TRACE_EVENT_API_ADD_TRACE_EVENT(
+-// char phase,
+-// const unsigned char* category_enabled,
+-// const char* name,
+-// unsigned long long id,
+-// int num_args,
+-// const char** arg_names,
+-// const unsigned char* arg_types,
+-// const unsigned long long* arg_values,
+-// unsigned char flags)
+-#define TRACE_EVENT_API_ADD_TRACE_EVENT \
+- gl::TraceAddTraceEvent
+-
+-////////////////////////////////////////////////////////////////////////////////
+-
+-// Implementation detail: trace event macros create temporary variables
+-// to keep instrumentation overhead low. These macros give each temporary
+-// variable a unique name based on the line number to prevent name collissions.
+-#define INTERNAL_TRACE_EVENT_UID3(a, b) \
+- trace_event_unique_##a##b
+-#define INTERNAL_TRACE_EVENT_UID2(a, b) \
+- INTERNAL_TRACE_EVENT_UID3(a, b)
+-#define INTERNALTRACEEVENTUID(name_prefix) \
+- INTERNAL_TRACE_EVENT_UID2(name_prefix, __LINE__)
+-
+-// Implementation detail: internal macro to create static category.
+-#define INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category) \
+- static const unsigned char* INTERNALTRACEEVENTUID(catstatic) = 0; \
+- if (!INTERNALTRACEEVENTUID(catstatic)) \
+- INTERNALTRACEEVENTUID(catstatic) = \
+- TRACE_EVENT_API_GET_CATEGORY_ENABLED(category);
+-
+-// Implementation detail: internal macro to create static category and add
+-// event if the category is enabled.
+-#define INTERNAL_TRACE_EVENT_ADD(phase, category, name, flags, ...) \
+- do { \
+- INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category); \
+- if (*INTERNALTRACEEVENTUID(catstatic)) { \
+- gl::TraceEvent::addTraceEvent( \
+- phase, INTERNALTRACEEVENTUID(catstatic), name, \
+- gl::TraceEvent::noEventId, flags, ##__VA_ARGS__); \
+- } \
+- } while (0)
+-
+-// Implementation detail: internal macro to create static category and add begin
+-// event if the category is enabled. Also adds the end event when the scope
+-// ends.
+-#define INTERNAL_TRACE_EVENT_ADD_SCOPED(category, name, ...) \
+- INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category); \
+- gl::TraceEvent::TraceEndOnScopeClose \
+- INTERNALTRACEEVENTUID(profileScope); \
+- if (*INTERNALTRACEEVENTUID(catstatic)) { \
+- gl::TraceEvent::addTraceEvent( \
+- TRACE_EVENT_PHASE_BEGIN, \
+- INTERNALTRACEEVENTUID(catstatic), \
+- name, gl::TraceEvent::noEventId, \
+- TRACE_EVENT_FLAG_NONE, ##__VA_ARGS__); \
+- INTERNALTRACEEVENTUID(profileScope).initialize( \
+- INTERNALTRACEEVENTUID(catstatic), name); \
+- }
+-
+-// Implementation detail: internal macro to create static category and add
+-// event if the category is enabled.
+-#define INTERNAL_TRACE_EVENT_ADD_WITH_ID(phase, category, name, id, flags, \
+- ...) \
+- do { \
+- INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category); \
+- if (*INTERNALTRACEEVENTUID(catstatic)) { \
+- unsigned char traceEventFlags = flags | TRACE_EVENT_FLAG_HAS_ID; \
+- gl::TraceEvent::TraceID traceEventTraceID( \
+- id, &traceEventFlags); \
+- gl::TraceEvent::addTraceEvent( \
+- phase, INTERNALTRACEEVENTUID(catstatic), \
+- name, traceEventTraceID.data(), traceEventFlags, \
+- ##__VA_ARGS__); \
+- } \
+- } while (0)
+-
+-// Notes regarding the following definitions:
+-// New values can be added and propagated to third party libraries, but existing
+-// definitions must never be changed, because third party libraries may use old
+-// definitions.
+-
+-// Phase indicates the nature of an event entry. E.g. part of a begin/end pair.
+-#define TRACE_EVENT_PHASE_BEGIN ('B')
+-#define TRACE_EVENT_PHASE_END ('E')
+-#define TRACE_EVENT_PHASE_INSTANT ('I')
+-#define TRACE_EVENT_PHASE_ASYNC_BEGIN ('S')
+-#define TRACE_EVENT_PHASE_ASYNC_STEP ('T')
+-#define TRACE_EVENT_PHASE_ASYNC_END ('F')
+-#define TRACE_EVENT_PHASE_METADATA ('M')
+-#define TRACE_EVENT_PHASE_COUNTER ('C')
+-#define TRACE_EVENT_PHASE_SAMPLE ('P')
+-
+-// Flags for changing the behavior of TRACE_EVENT_API_ADD_TRACE_EVENT.
+-#define TRACE_EVENT_FLAG_NONE (static_cast<unsigned char>(0))
+-#define TRACE_EVENT_FLAG_COPY (static_cast<unsigned char>(1 << 0))
+-#define TRACE_EVENT_FLAG_HAS_ID (static_cast<unsigned char>(1 << 1))
+-#define TRACE_EVENT_FLAG_MANGLE_ID (static_cast<unsigned char>(1 << 2))
+-
+-// Type values for identifying types in the TraceValue union.
+-#define TRACE_VALUE_TYPE_BOOL (static_cast<unsigned char>(1))
+-#define TRACE_VALUE_TYPE_UINT (static_cast<unsigned char>(2))
+-#define TRACE_VALUE_TYPE_INT (static_cast<unsigned char>(3))
+-#define TRACE_VALUE_TYPE_DOUBLE (static_cast<unsigned char>(4))
+-#define TRACE_VALUE_TYPE_POINTER (static_cast<unsigned char>(5))
+-#define TRACE_VALUE_TYPE_STRING (static_cast<unsigned char>(6))
+-#define TRACE_VALUE_TYPE_COPY_STRING (static_cast<unsigned char>(7))
+-
+-
+-namespace gl {
+-
+-namespace TraceEvent {
+-
+-// Specify these values when the corresponding argument of addTraceEvent is not
+-// used.
+-const int zeroNumArgs = 0;
+-const unsigned long long noEventId = 0;
+-
+-// TraceID encapsulates an ID that can either be an integer or pointer. Pointers
+-// are mangled with the Process ID so that they are unlikely to collide when the
+-// same pointer is used on different processes.
+-class TraceID {
+-public:
+- explicit TraceID(const void* id, unsigned char* flags) :
+- m_data(static_cast<unsigned long long>(reinterpret_cast<unsigned long>(id)))
+- {
+- *flags |= TRACE_EVENT_FLAG_MANGLE_ID;
+- }
+- explicit TraceID(unsigned long long id, unsigned char* flags) : m_data(id) { (void)flags; }
+- explicit TraceID(unsigned long id, unsigned char* flags) : m_data(id) { (void)flags; }
+- explicit TraceID(unsigned int id, unsigned char* flags) : m_data(id) { (void)flags; }
+- explicit TraceID(unsigned short id, unsigned char* flags) : m_data(id) { (void)flags; }
+- explicit TraceID(unsigned char id, unsigned char* flags) : m_data(id) { (void)flags; }
+- explicit TraceID(long long id, unsigned char* flags) :
+- m_data(static_cast<unsigned long long>(id)) { (void)flags; }
+- explicit TraceID(long id, unsigned char* flags) :
+- m_data(static_cast<unsigned long long>(id)) { (void)flags; }
+- explicit TraceID(int id, unsigned char* flags) :
+- m_data(static_cast<unsigned long long>(id)) { (void)flags; }
+- explicit TraceID(short id, unsigned char* flags) :
+- m_data(static_cast<unsigned long long>(id)) { (void)flags; }
+- explicit TraceID(signed char id, unsigned char* flags) :
+- m_data(static_cast<unsigned long long>(id)) { (void)flags; }
+-
+- unsigned long long data() const { return m_data; }
+-
+-private:
+- unsigned long long m_data;
+-};
+-
+-// Simple union to store various types as unsigned long long.
+-union TraceValueUnion {
+- bool m_bool;
+- unsigned long long m_uint;
+- long long m_int;
+- double m_double;
+- const void* m_pointer;
+- const char* m_string;
+-};
+-
+-// Simple container for const char* that should be copied instead of retained.
+-class TraceStringWithCopy {
+-public:
+- explicit TraceStringWithCopy(const char* str) : m_str(str) { }
+- operator const char* () const { return m_str; }
+-private:
+- const char* m_str;
+-};
+-
+-// Define setTraceValue for each allowed type. It stores the type and
+-// value in the return arguments. This allows this API to avoid declaring any
+-// structures so that it is portable to third_party libraries.
+-#define INTERNAL_DECLARE_SET_TRACE_VALUE(actual_type, \
+- union_member, \
+- value_type_id) \
+- static inline void setTraceValue(actual_type arg, \
+- unsigned char* type, \
+- unsigned long long* value) { \
+- TraceValueUnion typeValue; \
+- typeValue.union_member = arg; \
+- *type = value_type_id; \
+- *value = typeValue.m_uint; \
+- }
+-// Simpler form for int types that can be safely casted.
+-#define INTERNAL_DECLARE_SET_TRACE_VALUE_INT(actual_type, \
+- value_type_id) \
+- static inline void setTraceValue(actual_type arg, \
+- unsigned char* type, \
+- unsigned long long* value) { \
+- *type = value_type_id; \
+- *value = static_cast<unsigned long long>(arg); \
+- }
+-
+-INTERNAL_DECLARE_SET_TRACE_VALUE_INT(unsigned long long, TRACE_VALUE_TYPE_UINT)
+-INTERNAL_DECLARE_SET_TRACE_VALUE_INT(unsigned int, TRACE_VALUE_TYPE_UINT)
+-INTERNAL_DECLARE_SET_TRACE_VALUE_INT(unsigned short, TRACE_VALUE_TYPE_UINT)
+-INTERNAL_DECLARE_SET_TRACE_VALUE_INT(unsigned char, TRACE_VALUE_TYPE_UINT)
+-INTERNAL_DECLARE_SET_TRACE_VALUE_INT(long long, TRACE_VALUE_TYPE_INT)
+-INTERNAL_DECLARE_SET_TRACE_VALUE_INT(int, TRACE_VALUE_TYPE_INT)
+-INTERNAL_DECLARE_SET_TRACE_VALUE_INT(short, TRACE_VALUE_TYPE_INT)
+-INTERNAL_DECLARE_SET_TRACE_VALUE_INT(signed char, TRACE_VALUE_TYPE_INT)
+-INTERNAL_DECLARE_SET_TRACE_VALUE(bool, m_bool, TRACE_VALUE_TYPE_BOOL)
+-INTERNAL_DECLARE_SET_TRACE_VALUE(double, m_double, TRACE_VALUE_TYPE_DOUBLE)
+-INTERNAL_DECLARE_SET_TRACE_VALUE(const void*, m_pointer,
+- TRACE_VALUE_TYPE_POINTER)
+-INTERNAL_DECLARE_SET_TRACE_VALUE(const char*, m_string,
+- TRACE_VALUE_TYPE_STRING)
+-INTERNAL_DECLARE_SET_TRACE_VALUE(const TraceStringWithCopy&, m_string,
+- TRACE_VALUE_TYPE_COPY_STRING)
+-
+-#undef INTERNAL_DECLARE_SET_TRACE_VALUE
+-#undef INTERNAL_DECLARE_SET_TRACE_VALUE_INT
+-
+-static inline void setTraceValue(const std::string& arg,
+- unsigned char* type,
+- unsigned long long* value) {
+- TraceValueUnion typeValue;
+- typeValue.m_string = arg.data();
+- *type = TRACE_VALUE_TYPE_COPY_STRING;
+- *value = typeValue.m_uint;
+-}
+-
+-// These addTraceEvent template functions are defined here instead of in the
+-// macro, because the arg values could be temporary string objects. In order to
+-// store pointers to the internal c_str and pass through to the tracing API, the
+-// arg values must live throughout these procedures.
+-
+-static inline void addTraceEvent(char phase,
+- const unsigned char* categoryEnabled,
+- const char* name,
+- unsigned long long id,
+- unsigned char flags) {
+- TRACE_EVENT_API_ADD_TRACE_EVENT(
+- phase, categoryEnabled, name, id,
+- zeroNumArgs, 0, 0, 0,
+- flags);
+-}
+-
+-template<class ARG1_TYPE>
+-static inline void addTraceEvent(char phase,
+- const unsigned char* categoryEnabled,
+- const char* name,
+- unsigned long long id,
+- unsigned char flags,
+- const char* arg1Name,
+- const ARG1_TYPE& arg1Val) {
+- const int numArgs = 1;
+- unsigned char argTypes[1];
+- unsigned long long argValues[1];
+- setTraceValue(arg1Val, &argTypes[0], &argValues[0]);
+- TRACE_EVENT_API_ADD_TRACE_EVENT(
+- phase, categoryEnabled, name, id,
+- numArgs, &arg1Name, argTypes, argValues,
+- flags);
+-}
+-
+-template<class ARG1_TYPE, class ARG2_TYPE>
+-static inline void addTraceEvent(char phase,
+- const unsigned char* categoryEnabled,
+- const char* name,
+- unsigned long long id,
+- unsigned char flags,
+- const char* arg1Name,
+- const ARG1_TYPE& arg1Val,
+- const char* arg2Name,
+- const ARG2_TYPE& arg2Val) {
+- const int numArgs = 2;
+- const char* argNames[2] = { arg1Name, arg2Name };
+- unsigned char argTypes[2];
+- unsigned long long argValues[2];
+- setTraceValue(arg1Val, &argTypes[0], &argValues[0]);
+- setTraceValue(arg2Val, &argTypes[1], &argValues[1]);
+- return TRACE_EVENT_API_ADD_TRACE_EVENT(
+- phase, categoryEnabled, name, id,
+- numArgs, argNames, argTypes, argValues,
+- flags);
+-}
+-
+-// Used by TRACE_EVENTx macro. Do not use directly.
+-class TraceEndOnScopeClose {
+-public:
+- // Note: members of m_data intentionally left uninitialized. See initialize.
+- TraceEndOnScopeClose() : m_pdata(0) { }
+- ~TraceEndOnScopeClose()
+- {
+- if (m_pdata)
+- addEventIfEnabled();
+- }
+-
+- void initialize(const unsigned char* categoryEnabled,
+- const char* name)
+- {
+- m_data.categoryEnabled = categoryEnabled;
+- m_data.name = name;
+- m_pdata = &m_data;
+- }
+-
+-private:
+- // Add the end event if the category is still enabled.
+- void addEventIfEnabled()
+- {
+- // Only called when m_pdata is non-null.
+- if (*m_pdata->categoryEnabled) {
+- TRACE_EVENT_API_ADD_TRACE_EVENT(
+- TRACE_EVENT_PHASE_END,
+- m_pdata->categoryEnabled,
+- m_pdata->name, noEventId,
+- zeroNumArgs, 0, 0, 0,
+- TRACE_EVENT_FLAG_NONE);
+- }
+- }
+-
+- // This Data struct workaround is to avoid initializing all the members
+- // in Data during construction of this object, since this object is always
+- // constructed, even when tracing is disabled. If the members of Data were
+- // members of this class instead, compiler warnings occur about potential
+- // uninitialized accesses.
+- struct Data {
+- const unsigned char* categoryEnabled;
+- const char* name;
+- };
+- Data* m_pdata;
+- Data m_data;
+-};
+-
+-// TraceEventSamplingStateScope records the current sampling state
+-// and sets a new sampling state. When the scope exists, it restores
+-// the sampling state having recorded.
+-template<size_t BucketNumber>
+-class SamplingStateScope {
+-public:
+- SamplingStateScope(const char* categoryAndName)
+- {
+- m_previousState = SamplingStateScope<BucketNumber>::current();
+- SamplingStateScope<BucketNumber>::set(categoryAndName);
+- }
+-
+- ~SamplingStateScope()
+- {
+- SamplingStateScope<BucketNumber>::set(m_previousState);
+- }
+-
+- // FIXME: Make load/store to traceSamplingState[] thread-safe and atomic.
+- static inline const char* current()
+- {
+- return reinterpret_cast<const char*>(*gl::traceSamplingState[BucketNumber]);
+- }
+- static inline void set(const char* categoryAndName)
+- {
+- *gl::traceSamplingState[BucketNumber] = reinterpret_cast<long>(const_cast<char*>(categoryAndName));
+- }
+-
+-private:
+- const char* m_previousState;
+-};
+-
+-} // namespace TraceEvent
+-
+-} // namespace gl
+-
+-#endif
+diff --git a/src/angle/src/common/common.pri b/src/angle/src/common/common.pri
+index fd1c31c..8baedc5 100644
+--- a/src/angle/src/common/common.pri
++++ b/src/angle/src/common/common.pri
+@@ -51,7 +51,6 @@ static: DEFINES *= QT_OPENGL_ES_2_ANGLE_STATIC
+ HEADERS += \
+ $$ANGLE_DIR/src/common/angleutils.h \
+ $$ANGLE_DIR/src/common/debug.h \
+- $$ANGLE_DIR/src/common/event_tracer.h \
+ $$ANGLE_DIR/src/common/mathutil.h \
+ $$ANGLE_DIR/src/common/platform.h \
+ $$ANGLE_DIR/src/common/RefCountObject.h \
+@@ -61,7 +60,6 @@ HEADERS += \
+ SOURCES += \
+ $$ANGLE_DIR/src/common/angleutils.cpp \
+ $$ANGLE_DIR/src/common/debug.cpp \
+- $$ANGLE_DIR/src/common/event_tracer.cpp \
+ $$ANGLE_DIR/src/common/RefCountObject.cpp \
+ $$ANGLE_DIR/src/common/tls.cpp
+
--
1.9.0.msysgit.0