<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[203938] trunk/Source/ThirdParty/ANGLE</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/203938">203938</a></dd>
<dt>Author</dt> <dd>ddkilzer@apple.com</dd>
<dt>Date</dt> <dd>2016-07-29 20:22:19 -0700 (Fri, 29 Jul 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>ANGLE: Fix global constructors and exit-time destructors
<https://webkit.org/b/160332>
Reviewed by Darin Adler.
* Configurations/Base.xcconfig:
- Add warning flags.
* src/common/angleutils.cpp:
(FormatString):
* src/common/angleutils.h:
(MakeStaticString):
* src/common/debug.cpp:
* src/common/mathutil.cpp:
(gl::g_sharedexp_max):
(gl::convertRGBFloatsTo999E5):
* src/compiler/translator/ShaderLang.cpp:
(ShGetUniformRegisterMap):
* src/libANGLE/Caps.cpp:
(gl::TextureCapsMap::get):
* src/libANGLE/Device.cpp:
(egl::GetDeviceSet):
* src/libANGLE/Display.cpp:
(egl::Display::getClientExtensionString):
* src/libANGLE/formatutils.cpp:
(gl::BuildFormatMap):
(gl::BuildInternalFormatInfoMap):
(gl::GetInternalFormatMap):
(gl::BuildAllSizedInternalFormatSet):
(gl::GetSizedInternalFormat):
(gl::GetAllSizedInternalFormats):
* src/libANGLE/validationES3.cpp:
(gl::BuildES3FormatSet):
(gl::ValidateTexImageFormatCombination):
(gl::BuildSizedEffectiveInternalFormatList):
(gl::BuildUnsizedEffectiveInternalFormatList):
(gl::GetEffectiveInternalFormat):
(gl::BuildValidES3CopyTexImageCombinations):
(gl::IsValidES3CopyTexImageCombination):
- Fix global constructors and exit-time destructors.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceThirdPartyANGLEChangeLog">trunk/Source/ThirdParty/ANGLE/ChangeLog</a></li>
<li><a href="#trunkSourceThirdPartyANGLEConfigurationsBasexcconfig">trunk/Source/ThirdParty/ANGLE/Configurations/Base.xcconfig</a></li>
<li><a href="#trunkSourceThirdPartyANGLEsrccommonangleutilscpp">trunk/Source/ThirdParty/ANGLE/src/common/angleutils.cpp</a></li>
<li><a href="#trunkSourceThirdPartyANGLEsrccommonangleutilsh">trunk/Source/ThirdParty/ANGLE/src/common/angleutils.h</a></li>
<li><a href="#trunkSourceThirdPartyANGLEsrccommondebugcpp">trunk/Source/ThirdParty/ANGLE/src/common/debug.cpp</a></li>
<li><a href="#trunkSourceThirdPartyANGLEsrccommonmathutilcpp">trunk/Source/ThirdParty/ANGLE/src/common/mathutil.cpp</a></li>
<li><a href="#trunkSourceThirdPartyANGLEsrccompilertranslatorShaderLangcpp">trunk/Source/ThirdParty/ANGLE/src/compiler/translator/ShaderLang.cpp</a></li>
<li><a href="#trunkSourceThirdPartyANGLEsrclibANGLECapscpp">trunk/Source/ThirdParty/ANGLE/src/libANGLE/Caps.cpp</a></li>
<li><a href="#trunkSourceThirdPartyANGLEsrclibANGLEDevicecpp">trunk/Source/ThirdParty/ANGLE/src/libANGLE/Device.cpp</a></li>
<li><a href="#trunkSourceThirdPartyANGLEsrclibANGLEDisplaycpp">trunk/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp</a></li>
<li><a href="#trunkSourceThirdPartyANGLEsrclibANGLEformatutilscpp">trunk/Source/ThirdParty/ANGLE/src/libANGLE/formatutils.cpp</a></li>
<li><a href="#trunkSourceThirdPartyANGLEsrclibANGLEvalidationES3cpp">trunk/Source/ThirdParty/ANGLE/src/libANGLE/validationES3.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceThirdPartyANGLEChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/ChangeLog (203937 => 203938)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/ChangeLog        2016-07-30 02:02:48 UTC (rev 203937)
+++ trunk/Source/ThirdParty/ANGLE/ChangeLog        2016-07-30 03:22:19 UTC (rev 203938)
</span><span class="lines">@@ -1,3 +1,46 @@
</span><ins>+2016-07-29 David Kilzer <ddkilzer@apple.com>
+
+ ANGLE: Fix global constructors and exit-time destructors
+ <https://webkit.org/b/160332>
+
+ Reviewed by Darin Adler.
+
+ * Configurations/Base.xcconfig:
+ - Add warning flags.
+
+ * src/common/angleutils.cpp:
+ (FormatString):
+ * src/common/angleutils.h:
+ (MakeStaticString):
+ * src/common/debug.cpp:
+ * src/common/mathutil.cpp:
+ (gl::g_sharedexp_max):
+ (gl::convertRGBFloatsTo999E5):
+ * src/compiler/translator/ShaderLang.cpp:
+ (ShGetUniformRegisterMap):
+ * src/libANGLE/Caps.cpp:
+ (gl::TextureCapsMap::get):
+ * src/libANGLE/Device.cpp:
+ (egl::GetDeviceSet):
+ * src/libANGLE/Display.cpp:
+ (egl::Display::getClientExtensionString):
+ * src/libANGLE/formatutils.cpp:
+ (gl::BuildFormatMap):
+ (gl::BuildInternalFormatInfoMap):
+ (gl::GetInternalFormatMap):
+ (gl::BuildAllSizedInternalFormatSet):
+ (gl::GetSizedInternalFormat):
+ (gl::GetAllSizedInternalFormats):
+ * src/libANGLE/validationES3.cpp:
+ (gl::BuildES3FormatSet):
+ (gl::ValidateTexImageFormatCombination):
+ (gl::BuildSizedEffectiveInternalFormatList):
+ (gl::BuildUnsizedEffectiveInternalFormatList):
+ (gl::GetEffectiveInternalFormat):
+ (gl::BuildValidES3CopyTexImageCombinations):
+ (gl::IsValidES3CopyTexImageCombination):
+ - Fix global constructors and exit-time destructors.
+
</ins><span class="cx"> 2016-07-13 Enrica Casucci <enrica@apple.com>
</span><span class="cx">
</span><span class="cx"> Update supported platforms in xcconfig files to match the sdk names.
</span></span></pre></div>
<a id="trunkSourceThirdPartyANGLEConfigurationsBasexcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/Configurations/Base.xcconfig (203937 => 203938)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/Configurations/Base.xcconfig        2016-07-30 02:02:48 UTC (rev 203937)
+++ trunk/Source/ThirdParty/ANGLE/Configurations/Base.xcconfig        2016-07-30 03:22:19 UTC (rev 203938)
</span><span class="lines">@@ -42,6 +42,7 @@
</span><span class="cx"> GCC_WARN_UNUSED_VARIABLE = YES;
</span><span class="cx"> PREBINDING = NO;
</span><span class="cx"> STRIP_INSTALLED_PRODUCT = NO;
</span><ins>+WARNING_CFLAGS = -Wexit-time-destructors -Wglobal-constructors;
</ins><span class="cx">
</span><span class="cx"> SUPPORTED_PLATFORMS = iphoneos iphonesimulator macosx appletvos appletvsimulator watchos watchsimulator;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceThirdPartyANGLEsrccommonangleutilscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/src/common/angleutils.cpp (203937 => 203938)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/src/common/angleutils.cpp        2016-07-30 02:02:48 UTC (rev 203937)
+++ trunk/Source/ThirdParty/ANGLE/src/common/angleutils.cpp        2016-07-30 03:22:19 UTC (rev 203938)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx">
</span><span class="cx"> std::string FormatString(const char *fmt, va_list vararg)
</span><span class="cx"> {
</span><del>- static std::vector<char> buffer(512);
</del><ins>+ static auto& buffer = *new std::vector<char>(512);
</ins><span class="cx">
</span><span class="cx"> size_t len = FormatStringIntoVector(fmt, vararg, buffer);
</span><span class="cx"> return std::string(&buffer[0], len);
</span></span></pre></div>
<a id="trunkSourceThirdPartyANGLEsrccommonangleutilsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/src/common/angleutils.h (203937 => 203938)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/src/common/angleutils.h        2016-07-30 02:02:48 UTC (rev 203937)
+++ trunk/Source/ThirdParty/ANGLE/src/common/angleutils.h        2016-07-30 03:22:19 UTC (rev 203938)
</span><span class="lines">@@ -116,7 +116,7 @@
</span><span class="cx">
</span><span class="cx"> inline const char* MakeStaticString(const std::string &str)
</span><span class="cx"> {
</span><del>- static std::set<std::string> strings;
</del><ins>+ static auto& strings = *new std::set<std::string>;
</ins><span class="cx"> std::set<std::string>::iterator it = strings.find(str);
</span><span class="cx"> if (it != strings.end())
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceThirdPartyANGLEsrccommondebugcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/src/common/debug.cpp (203937 => 203938)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/src/common/debug.cpp        2016-07-30 02:02:48 UTC (rev 203937)
+++ trunk/Source/ThirdParty/ANGLE/src/common/debug.cpp        2016-07-30 03:22:19 UTC (rev 203938)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> {
</span><span class="cx"> if (DebugAnnotationsActive())
</span><span class="cx"> {
</span><del>- static std::vector<char> buffer(512);
</del><ins>+ static auto& buffer = *new std::vector<char>(512);
</ins><span class="cx"> size_t len = FormatStringIntoVector(format, vararg, buffer);
</span><span class="cx"> std::wstring formattedWideMessage(buffer.begin(), buffer.begin() + len);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceThirdPartyANGLEsrccommonmathutilcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/src/common/mathutil.cpp (203937 => 203938)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/src/common/mathutil.cpp        2016-07-30 02:02:48 UTC (rev 203937)
+++ trunk/Source/ThirdParty/ANGLE/src/common/mathutil.cpp        2016-07-30 03:22:19 UTC (rev 203938)
</span><span class="lines">@@ -31,15 +31,19 @@
</span><span class="cx"> // Emax is the maximum allowed biased exponent value (31)
</span><span class="cx"> static const int g_sharedexp_maxexponent = 31;
</span><span class="cx">
</span><del>-static const float g_sharedexp_max = ((pow(2.0f, g_sharedexp_mantissabits) - 1) /
- pow(2.0f, g_sharedexp_mantissabits)) *
- pow(2.0f, g_sharedexp_maxexponent - g_sharedexp_bias);
</del><ins>+static float g_sharedexp_max()
+{
+ static float sharedexp_max = ((powf(2.0f, g_sharedexp_mantissabits) - 1) /
+ powf(2.0f, g_sharedexp_mantissabits)) *
+ powf(2.0f, g_sharedexp_maxexponent - g_sharedexp_bias);
+ return sharedexp_max;
+}
</ins><span class="cx">
</span><span class="cx"> unsigned int convertRGBFloatsTo999E5(float red, float green, float blue)
</span><span class="cx"> {
</span><del>- const float red_c = std::max<float>(0, std::min(g_sharedexp_max, red));
- const float green_c = std::max<float>(0, std::min(g_sharedexp_max, green));
- const float blue_c = std::max<float>(0, std::min(g_sharedexp_max, blue));
</del><ins>+ const float red_c = std::max<float>(0, std::min(g_sharedexp_max(), red));
+ const float green_c = std::max<float>(0, std::min(g_sharedexp_max(), green));
+ const float blue_c = std::max<float>(0, std::min(g_sharedexp_max(), blue));
</ins><span class="cx">
</span><span class="cx"> const float max_c = std::max<float>(std::max<float>(red_c, green_c), blue_c);
</span><span class="cx"> const float exp_p = std::max<float>(-g_sharedexp_bias - 1, floor(log(max_c))) + 1 + g_sharedexp_bias;
</span></span></pre></div>
<a id="trunkSourceThirdPartyANGLEsrccompilertranslatorShaderLangcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/src/compiler/translator/ShaderLang.cpp (203937 => 203938)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/src/compiler/translator/ShaderLang.cpp        2016-07-30 02:02:48 UTC (rev 203937)
+++ trunk/Source/ThirdParty/ANGLE/src/compiler/translator/ShaderLang.cpp        2016-07-30 03:22:19 UTC (rev 203938)
</span><span class="lines">@@ -371,7 +371,7 @@
</span><span class="cx">
</span><span class="cx"> return translator->getUniformRegisterMap();
</span><span class="cx"> #else
</span><del>- static std::map<std::string, unsigned int> map;
</del><ins>+ static auto& map = *new std::map<std::string, unsigned int>;
</ins><span class="cx"> return &map;
</span><span class="cx"> #endif // ANGLE_ENABLE_HLSL
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceThirdPartyANGLEsrclibANGLECapscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/src/libANGLE/Caps.cpp (203937 => 203938)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/src/libANGLE/Caps.cpp        2016-07-30 02:02:48 UTC (rev 203937)
+++ trunk/Source/ThirdParty/ANGLE/src/libANGLE/Caps.cpp        2016-07-30 03:22:19 UTC (rev 203938)
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx">
</span><span class="cx"> const TextureCaps &TextureCapsMap::get(GLenum internalFormat) const
</span><span class="cx"> {
</span><del>- static TextureCaps defaultUnsupportedTexture;
</del><ins>+ static auto& defaultUnsupportedTexture = *new TextureCaps;
</ins><span class="cx"> InternalFormatToCapsMap::const_iterator iter = mCapsMap.find(internalFormat);
</span><span class="cx"> return (iter != mCapsMap.end()) ? iter->second : defaultUnsupportedTexture;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceThirdPartyANGLEsrclibANGLEDevicecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/src/libANGLE/Device.cpp (203937 => 203938)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/src/libANGLE/Device.cpp        2016-07-30 02:02:48 UTC (rev 203937)
+++ trunk/Source/ThirdParty/ANGLE/src/libANGLE/Device.cpp        2016-07-30 03:22:19 UTC (rev 203938)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> typedef std::set<egl::Device *> DeviceSet;
</span><span class="cx"> static DeviceSet *GetDeviceSet()
</span><span class="cx"> {
</span><del>- static DeviceSet devices;
</del><ins>+ static auto& devices = *new DeviceSet;
</ins><span class="cx"> return &devices;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceThirdPartyANGLEsrclibANGLEDisplaycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp (203937 => 203938)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp        2016-07-30 02:02:48 UTC (rev 203937)
+++ trunk/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp        2016-07-30 03:22:19 UTC (rev 203938)
</span><span class="lines">@@ -82,7 +82,7 @@
</span><span class="cx"> // associated with it.
</span><span class="cx"> static WindowSurfaceMap *GetWindowSurfaces()
</span><span class="cx"> {
</span><del>- static WindowSurfaceMap windowSurfaces;
</del><ins>+ static auto& windowSurfaces = *new WindowSurfaceMap;
</ins><span class="cx"> return &windowSurfaces;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx"> typedef std::map<EGLNativeDisplayType, Display *> ANGLEPlatformDisplayMap;
</span><span class="cx"> static ANGLEPlatformDisplayMap *GetANGLEPlatformDisplayMap()
</span><span class="cx"> {
</span><del>- static ANGLEPlatformDisplayMap displays;
</del><ins>+ static auto& displays = *new ANGLEPlatformDisplayMap;
</ins><span class="cx"> return &displays;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx"> typedef std::map<Device *, Display *> DevicePlatformDisplayMap;
</span><span class="cx"> static DevicePlatformDisplayMap *GetDevicePlatformDisplayMap()
</span><span class="cx"> {
</span><del>- static DevicePlatformDisplayMap displays;
</del><ins>+ static auto& displays = *new DevicePlatformDisplayMap;
</ins><span class="cx"> return &displays;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -949,7 +949,7 @@
</span><span class="cx">
</span><span class="cx"> const std::string &Display::getClientExtensionString()
</span><span class="cx"> {
</span><del>- static const std::string clientExtensionsString = GenerateExtensionsString(getClientExtensions());
</del><ins>+ static const auto& clientExtensionsString = *new std::string(GenerateExtensionsString(getClientExtensions()));
</ins><span class="cx"> return clientExtensionsString;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceThirdPartyANGLEsrclibANGLEformatutilscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/src/libANGLE/formatutils.cpp (203937 => 203938)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/src/libANGLE/formatutils.cpp        2016-07-30 02:02:48 UTC (rev 203937)
+++ trunk/Source/ThirdParty/ANGLE/src/libANGLE/formatutils.cpp        2016-07-30 03:22:19 UTC (rev 203938)
</span><span class="lines">@@ -29,9 +29,9 @@
</span><span class="cx"> map->insert(FormatPair(FormatTypePair(format, type), internalFormat));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-FormatMap BuildFormatMap()
</del><ins>+FormatMap& BuildFormatMap()
</ins><span class="cx"> {
</span><del>- FormatMap map;
</del><ins>+ auto& map = *new FormatMap;
</ins><span class="cx">
</span><span class="cx"> // | Format | Type | Internal format |
</span><span class="cx"> InsertFormatMapping(&map, GL_RGBA, GL_UNSIGNED_BYTE, GL_RGBA8);
</span><span class="lines">@@ -392,9 +392,9 @@
</span><span class="cx"> typedef std::pair<GLenum, InternalFormat> InternalFormatInfoPair;
</span><span class="cx"> typedef std::map<GLenum, InternalFormat> InternalFormatInfoMap;
</span><span class="cx">
</span><del>-static InternalFormatInfoMap BuildInternalFormatInfoMap()
</del><ins>+static InternalFormatInfoMap& BuildInternalFormatInfoMap()
</ins><span class="cx"> {
</span><del>- InternalFormatInfoMap map;
</del><ins>+ auto& map = *new InternalFormatInfoMap;
</ins><span class="cx">
</span><span class="cx"> // clang-format off
</span><span class="cx"> // From ES 3.0.1 spec, table 3.12
</span><span class="lines">@@ -576,13 +576,13 @@
</span><span class="cx">
</span><span class="cx"> static const InternalFormatInfoMap &GetInternalFormatMap()
</span><span class="cx"> {
</span><del>- static const InternalFormatInfoMap formatMap = BuildInternalFormatInfoMap();
</del><ins>+ static const InternalFormatInfoMap& formatMap = BuildInternalFormatInfoMap();
</ins><span class="cx"> return formatMap;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static FormatSet BuildAllSizedInternalFormatSet()
</del><ins>+static FormatSet& BuildAllSizedInternalFormatSet()
</ins><span class="cx"> {
</span><del>- FormatSet result;
</del><ins>+ auto& result = *new FormatSet;
</ins><span class="cx">
</span><span class="cx"> const InternalFormatInfoMap &formats = GetInternalFormatMap();
</span><span class="cx"> for (InternalFormatInfoMap::const_iterator i = formats.begin(); i != formats.end(); i++)
</span><span class="lines">@@ -742,7 +742,7 @@
</span><span class="cx"> }
</span><span class="cx"> else
</span><span class="cx"> {
</span><del>- static const FormatMap formatMap = BuildFormatMap();
</del><ins>+ static const FormatMap& formatMap = BuildFormatMap();
</ins><span class="cx"> FormatMap::const_iterator iter = formatMap.find(FormatTypePair(internalFormat, type));
</span><span class="cx"> if (iter != formatMap.end())
</span><span class="cx"> {
</span><span class="lines">@@ -757,7 +757,7 @@
</span><span class="cx">
</span><span class="cx"> const FormatSet &GetAllSizedInternalFormats()
</span><span class="cx"> {
</span><del>- static FormatSet formatSet = BuildAllSizedInternalFormatSet();
</del><ins>+ static FormatSet& formatSet = BuildAllSizedInternalFormatSet();
</ins><span class="cx"> return formatSet;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceThirdPartyANGLEsrclibANGLEvalidationES3cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/src/libANGLE/validationES3.cpp (203937 => 203938)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/src/libANGLE/validationES3.cpp        2016-07-30 02:02:48 UTC (rev 203937)
+++ trunk/Source/ThirdParty/ANGLE/src/libANGLE/validationES3.cpp        2016-07-30 03:22:19 UTC (rev 203938)
</span><span class="lines">@@ -44,9 +44,9 @@
</span><span class="cx"> set->insert(info);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-ES3FormatCombinationSet BuildES3FormatSet()
</del><ins>+ES3FormatCombinationSet& BuildES3FormatSet()
</ins><span class="cx"> {
</span><del>- ES3FormatCombinationSet set;
</del><ins>+ auto& set = *new ES3FormatCombinationSet;
</ins><span class="cx">
</span><span class="cx"> // Format combinations from ES 3.0.1 spec, table 3.2
</span><span class="cx">
</span><span class="lines">@@ -217,7 +217,7 @@
</span><span class="cx"> bool formatSupported = false;
</span><span class="cx"> bool typeSupported = false;
</span><span class="cx">
</span><del>- static const ES3FormatCombinationSet es3FormatSet = BuildES3FormatSet();
</del><ins>+ static const ES3FormatCombinationSet& es3FormatSet = BuildES3FormatSet();
</ins><span class="cx"> for (ES3FormatCombinationSet::const_iterator i = es3FormatSet.begin(); i != es3FormatSet.end(); i++)
</span><span class="cx"> {
</span><span class="cx"> if (i->format == format || i->type == type)
</span><span class="lines">@@ -591,9 +591,9 @@
</span><span class="cx">
</span><span class="cx"> typedef std::vector<EffectiveInternalFormatInfo> EffectiveInternalFormatList;
</span><span class="cx">
</span><del>-static EffectiveInternalFormatList BuildSizedEffectiveInternalFormatList()
</del><ins>+static EffectiveInternalFormatList& BuildSizedEffectiveInternalFormatList()
</ins><span class="cx"> {
</span><del>- EffectiveInternalFormatList list;
</del><ins>+ auto& list = *new EffectiveInternalFormatList;
</ins><span class="cx">
</span><span class="cx"> // OpenGL ES 3.0.3 Specification, Table 3.17, pg 141: Effective internal format coresponding to destination internal format and
</span><span class="cx"> // linear source buffer component sizes.
</span><span class="lines">@@ -612,9 +612,9 @@
</span><span class="cx"> return list;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static EffectiveInternalFormatList BuildUnsizedEffectiveInternalFormatList()
</del><ins>+static EffectiveInternalFormatList& BuildUnsizedEffectiveInternalFormatList()
</ins><span class="cx"> {
</span><del>- EffectiveInternalFormatList list;
</del><ins>+ auto& list = *new EffectiveInternalFormatList;
</ins><span class="cx">
</span><span class="cx"> // OpenGL ES 3.0.3 Specification, Table 3.17, pg 141: Effective internal format coresponding to destination internal format and
</span><span class="cx"> // linear source buffer component sizes.
</span><span class="lines">@@ -640,12 +640,12 @@
</span><span class="cx">
</span><span class="cx"> if (destFormat.pixelBytes > 0)
</span><span class="cx"> {
</span><del>- static const EffectiveInternalFormatList sizedList = BuildSizedEffectiveInternalFormatList();
</del><ins>+ static const EffectiveInternalFormatList& sizedList = BuildSizedEffectiveInternalFormatList();
</ins><span class="cx"> list = &sizedList;
</span><span class="cx"> }
</span><span class="cx"> else
</span><span class="cx"> {
</span><del>- static const EffectiveInternalFormatList unsizedList = BuildUnsizedEffectiveInternalFormatList();
</del><ins>+ static const EffectiveInternalFormatList& unsizedList = BuildUnsizedEffectiveInternalFormatList();
</ins><span class="cx"> list = &unsizedList;
</span><span class="cx"> targetFormat = destFormat.format;
</span><span class="cx"> }
</span><span class="lines">@@ -683,9 +683,9 @@
</span><span class="cx">
</span><span class="cx"> typedef std::set<CopyConversion> CopyConversionSet;
</span><span class="cx">
</span><del>-static CopyConversionSet BuildValidES3CopyTexImageCombinations()
</del><ins>+static CopyConversionSet& BuildValidES3CopyTexImageCombinations()
</ins><span class="cx"> {
</span><del>- CopyConversionSet set;
</del><ins>+ auto& set = *new CopyConversionSet;
</ins><span class="cx">
</span><span class="cx"> // From ES 3.0.1 spec, table 3.15
</span><span class="cx"> set.insert(CopyConversion(GL_ALPHA, GL_RGBA));
</span><span class="lines">@@ -733,7 +733,7 @@
</span><span class="cx"> const InternalFormat &textureInternalFormatInfo = GetInternalFormatInfo(textureInternalFormat);
</span><span class="cx"> const InternalFormat &framebufferInternalFormatInfo = GetInternalFormatInfo(frameBufferInternalFormat);
</span><span class="cx">
</span><del>- static const CopyConversionSet conversionSet = BuildValidES3CopyTexImageCombinations();
</del><ins>+ static const CopyConversionSet& conversionSet = BuildValidES3CopyTexImageCombinations();
</ins><span class="cx"> if (conversionSet.find(CopyConversion(textureInternalFormatInfo.format, framebufferInternalFormatInfo.format)) != conversionSet.end())
</span><span class="cx"> {
</span><span class="cx"> // Section 3.8.5 of the GLES 3.0.3 spec states that source and destination formats
</span></span></pre>
</div>
</div>
</body>
</html>