<!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
&lt;https://webkit.org/b/160332&gt;

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  &lt;ddkilzer@apple.com&gt;
+
+        ANGLE: Fix global constructors and exit-time destructors
+        &lt;https://webkit.org/b/160332&gt;
+
+        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  &lt;enrica@apple.com&gt;
</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&lt;char&gt; buffer(512);
</del><ins>+    static auto&amp; buffer = *new std::vector&lt;char&gt;(512);
</ins><span class="cx"> 
</span><span class="cx">     size_t len = FormatStringIntoVector(fmt, vararg, buffer);
</span><span class="cx">     return std::string(&amp;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 &amp;str)
</span><span class="cx"> {
</span><del>-    static std::set&lt;std::string&gt; strings;
</del><ins>+    static auto&amp; strings = *new std::set&lt;std::string&gt;;
</ins><span class="cx">     std::set&lt;std::string&gt;::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&lt;char&gt; buffer(512);
</del><ins>+        static auto&amp; buffer = *new std::vector&lt;char&gt;(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&lt;float&gt;(0, std::min(g_sharedexp_max, red));
-    const float green_c = std::max&lt;float&gt;(0, std::min(g_sharedexp_max, green));
-    const float blue_c = std::max&lt;float&gt;(0, std::min(g_sharedexp_max, blue));
</del><ins>+    const float red_c = std::max&lt;float&gt;(0, std::min(g_sharedexp_max(), red));
+    const float green_c = std::max&lt;float&gt;(0, std::min(g_sharedexp_max(), green));
+    const float blue_c = std::max&lt;float&gt;(0, std::min(g_sharedexp_max(), blue));
</ins><span class="cx"> 
</span><span class="cx">     const float max_c = std::max&lt;float&gt;(std::max&lt;float&gt;(red_c, green_c), blue_c);
</span><span class="cx">     const float exp_p = std::max&lt;float&gt;(-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-&gt;getUniformRegisterMap();
</span><span class="cx"> #else
</span><del>-    static std::map&lt;std::string, unsigned int&gt; map;
</del><ins>+    static auto&amp; map = *new std::map&lt;std::string, unsigned int&gt;;
</ins><span class="cx">     return &amp;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 &amp;TextureCapsMap::get(GLenum internalFormat) const
</span><span class="cx"> {
</span><del>-    static TextureCaps defaultUnsupportedTexture;
</del><ins>+    static auto&amp; defaultUnsupportedTexture = *new TextureCaps;
</ins><span class="cx">     InternalFormatToCapsMap::const_iterator iter = mCapsMap.find(internalFormat);
</span><span class="cx">     return (iter != mCapsMap.end()) ? iter-&gt;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&lt;egl::Device *&gt; DeviceSet;
</span><span class="cx"> static DeviceSet *GetDeviceSet()
</span><span class="cx"> {
</span><del>-    static DeviceSet devices;
</del><ins>+    static auto&amp; devices = *new DeviceSet;
</ins><span class="cx">     return &amp;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&amp; windowSurfaces = *new WindowSurfaceMap;
</ins><span class="cx">     return &amp;windowSurfaces;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx"> typedef std::map&lt;EGLNativeDisplayType, Display *&gt; ANGLEPlatformDisplayMap;
</span><span class="cx"> static ANGLEPlatformDisplayMap *GetANGLEPlatformDisplayMap()
</span><span class="cx"> {
</span><del>-    static ANGLEPlatformDisplayMap displays;
</del><ins>+    static auto&amp; displays = *new ANGLEPlatformDisplayMap;
</ins><span class="cx">     return &amp;displays;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx"> typedef std::map&lt;Device *, Display *&gt; DevicePlatformDisplayMap;
</span><span class="cx"> static DevicePlatformDisplayMap *GetDevicePlatformDisplayMap()
</span><span class="cx"> {
</span><del>-    static DevicePlatformDisplayMap displays;
</del><ins>+    static auto&amp; displays = *new DevicePlatformDisplayMap;
</ins><span class="cx">     return &amp;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 &amp;Display::getClientExtensionString()
</span><span class="cx"> {
</span><del>-    static const std::string clientExtensionsString = GenerateExtensionsString(getClientExtensions());
</del><ins>+    static const auto&amp; 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-&gt;insert(FormatPair(FormatTypePair(format, type), internalFormat));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-FormatMap BuildFormatMap()
</del><ins>+FormatMap&amp; BuildFormatMap()
</ins><span class="cx"> {
</span><del>-    FormatMap map;
</del><ins>+    auto&amp; map = *new FormatMap;
</ins><span class="cx"> 
</span><span class="cx">     //                       | Format               | Type                             | Internal format          |
</span><span class="cx">     InsertFormatMapping(&amp;map, GL_RGBA,               GL_UNSIGNED_BYTE,                  GL_RGBA8);
</span><span class="lines">@@ -392,9 +392,9 @@
</span><span class="cx"> typedef std::pair&lt;GLenum, InternalFormat&gt; InternalFormatInfoPair;
</span><span class="cx"> typedef std::map&lt;GLenum, InternalFormat&gt; InternalFormatInfoMap;
</span><span class="cx"> 
</span><del>-static InternalFormatInfoMap BuildInternalFormatInfoMap()
</del><ins>+static InternalFormatInfoMap&amp; BuildInternalFormatInfoMap()
</ins><span class="cx"> {
</span><del>-    InternalFormatInfoMap map;
</del><ins>+    auto&amp; 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 &amp;GetInternalFormatMap()
</span><span class="cx"> {
</span><del>-    static const InternalFormatInfoMap formatMap = BuildInternalFormatInfoMap();
</del><ins>+    static const InternalFormatInfoMap&amp; 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&amp; BuildAllSizedInternalFormatSet()
</ins><span class="cx"> {
</span><del>-    FormatSet result;
</del><ins>+    auto&amp; result = *new FormatSet;
</ins><span class="cx"> 
</span><span class="cx">     const InternalFormatInfoMap &amp;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&amp; 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 &amp;GetAllSizedInternalFormats()
</span><span class="cx"> {
</span><del>-    static FormatSet formatSet = BuildAllSizedInternalFormatSet();
</del><ins>+    static FormatSet&amp; 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-&gt;insert(info);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-ES3FormatCombinationSet BuildES3FormatSet()
</del><ins>+ES3FormatCombinationSet&amp; BuildES3FormatSet()
</ins><span class="cx"> {
</span><del>-    ES3FormatCombinationSet set;
</del><ins>+    auto&amp; 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&amp; 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-&gt;format == format || i-&gt;type == type)
</span><span class="lines">@@ -591,9 +591,9 @@
</span><span class="cx"> 
</span><span class="cx"> typedef std::vector&lt;EffectiveInternalFormatInfo&gt; EffectiveInternalFormatList;
</span><span class="cx"> 
</span><del>-static EffectiveInternalFormatList BuildSizedEffectiveInternalFormatList()
</del><ins>+static EffectiveInternalFormatList&amp; BuildSizedEffectiveInternalFormatList()
</ins><span class="cx"> {
</span><del>-    EffectiveInternalFormatList list;
</del><ins>+    auto&amp; 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&amp; BuildUnsizedEffectiveInternalFormatList()
</ins><span class="cx"> {
</span><del>-    EffectiveInternalFormatList list;
</del><ins>+    auto&amp; 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 &gt; 0)
</span><span class="cx">     {
</span><del>-        static const EffectiveInternalFormatList sizedList = BuildSizedEffectiveInternalFormatList();
</del><ins>+        static const EffectiveInternalFormatList&amp; sizedList = BuildSizedEffectiveInternalFormatList();
</ins><span class="cx">         list = &amp;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&amp; unsizedList = BuildUnsizedEffectiveInternalFormatList();
</ins><span class="cx">         list = &amp;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&lt;CopyConversion&gt; CopyConversionSet;
</span><span class="cx"> 
</span><del>-static CopyConversionSet BuildValidES3CopyTexImageCombinations()
</del><ins>+static CopyConversionSet&amp; BuildValidES3CopyTexImageCombinations()
</ins><span class="cx"> {
</span><del>-    CopyConversionSet set;
</del><ins>+    auto&amp; 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 &amp;textureInternalFormatInfo = GetInternalFormatInfo(textureInternalFormat);
</span><span class="cx">     const InternalFormat &amp;framebufferInternalFormatInfo = GetInternalFormatInfo(frameBufferInternalFormat);
</span><span class="cx"> 
</span><del>-    static const CopyConversionSet conversionSet = BuildValidES3CopyTexImageCombinations();
</del><ins>+    static const CopyConversionSet&amp; 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>