diff -r 000000000000 -r 6474c204b198 gfx/angle/angle-long-ident-hash.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gfx/angle/angle-long-ident-hash.patch Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,137 @@ +From: Jeff Gilbert + +diff --git a/gfx/angle/Makefile.in b/gfx/angle/Makefile.in +--- a/gfx/angle/Makefile.in ++++ b/gfx/angle/Makefile.in +@@ -32,16 +32,17 @@ LOCAL_INCLUDES += \ + -I$(srcdir)/src + + DEFINES += -DCOMPILER_IMPLEMENTATION + + VPATH += $(srcdir)/src/compiler + VPATH += $(srcdir)/src/compiler/depgraph + VPATH += $(srcdir)/src/compiler/timing + VPATH += $(srcdir)/src/third_party/compiler ++VPATH += $(srcdir)/src/third_party/murmurhash + + # Target: 'translator_glsl' + # Requires: 'translator_common' + # src/compiler: + ifdef MOZ_ANGLE_RENDERER + + libs:: + ifdef MOZ_D3DCOMPILER_CAB +diff --git a/gfx/angle/moz.build b/gfx/angle/moz.build +--- a/gfx/angle/moz.build ++++ b/gfx/angle/moz.build +@@ -83,16 +83,21 @@ CPP_SOURCES += [ + 'RestrictVertexShaderTiming.cpp', + ] + + # src/third_party/compiler: + CPP_SOURCES += [ + 'ArrayBoundsClamper.cpp', + ] + ++# src/third_party/murmurhash: ++CPP_SOURCES += [ ++ 'MurmurHash3.cpp', ++] ++ + if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': + CPP_SOURCES += [ + 'ossource_win.cpp', + ] + else: + CPP_SOURCES += [ + 'ossource_posix.cpp', + ] +diff --git a/gfx/angle/src/compiler/MapLongVariableNames.cpp b/gfx/angle/src/compiler/MapLongVariableNames.cpp +--- a/gfx/angle/src/compiler/MapLongVariableNames.cpp ++++ b/gfx/angle/src/compiler/MapLongVariableNames.cpp +@@ -1,29 +1,39 @@ + // + // Copyright (c) 2002-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 "compiler/MapLongVariableNames.h" + ++#include "third_party/murmurhash/MurmurHash3.h" ++ + namespace { + + TString mapLongName(size_t id, const TString& name, bool isGlobal) + { + ASSERT(name.size() > MAX_SHORTENED_IDENTIFIER_SIZE); + TStringStream stream; +- stream << "webgl_"; +- if (isGlobal) +- stream << "g"; +- stream << id; +- if (name[0] != '_') +- stream << "_"; +- stream << name.substr(0, MAX_SHORTENED_IDENTIFIER_SIZE - stream.str().size()); ++ ++ uint64_t hash[2] = {0, 0}; ++ MurmurHash3_x64_128(name.data(), name.length(), 0, hash); ++ ++ // We want to avoid producing a string with a double underscore, ++ // which would be an illegal GLSL identifier. We can assume that the ++ // original identifier doesn't have a double underscore, otherwise ++ // it's illegal anyway. ++ stream << (name[0] == '_' ? "webgl" : "webgl_") ++ << name.substr(0, 9) ++ << (name[8] == '_' ? "" : "_") ++ << std::hex ++ << hash[0]; ++ ASSERT(stream.str().length() <= MAX_SHORTENED_IDENTIFIER_SIZE); ++ ASSERT(stream.str().length() >= MAX_SHORTENED_IDENTIFIER_SIZE - 2); + return stream.str(); + } + + LongNameMap* gLongNameMapInstance = NULL; + + } // anonymous namespace + + LongNameMap::LongNameMap() +diff --git a/gfx/angle/src/libGLESv2/moz.build b/gfx/angle/src/libGLESv2/moz.build +--- a/gfx/angle/src/libGLESv2/moz.build ++++ b/gfx/angle/src/libGLESv2/moz.build +@@ -71,16 +71,21 @@ CPP_SOURCES += [ + 'RestrictVertexShaderTiming.cpp', + ] + + # src/third_party/compiler: + CPP_SOURCES += [ + 'ArrayBoundsClamper.cpp', + ] + ++# src/third_party/murmurhash: ++CPP_SOURCES += [ ++ 'MurmurHash3.cpp', ++] ++ + if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': + CPP_SOURCES += [ + 'ossource_win.cpp', + ] + else: + CPP_SOURCES += [ + 'ossource_posix.cpp', + ] +@@ -165,13 +170,8 @@ CPP_SOURCES += [ + 'TextureStorage11.cpp', + 'TextureStorage9.cpp', + 'VertexBuffer.cpp', + 'VertexBuffer9.cpp', + 'VertexBuffer11.cpp', + 'VertexDataManager.cpp', + 'VertexDeclarationCache.cpp', + ] +- +-# src/third_party/murmurhash: +-CPP_SOURCES += [ +- 'MurmurHash3.cpp', +-]