Use a global ref-counted singleton for long name map.
This makes sure the same varying/uniform variables maps to the unique name in vertex/fragment shader.
BUG=
TEST=webgl conformance tests
Review URL: https://codereview.appspot.com/5556065
git-svn-id: https://angleproject.googlecode.com/svn/trunk@950 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/Compiler.cpp b/src/compiler/Compiler.cpp
index 22764bd..f27cb75 100644
--- a/src/compiler/Compiler.cpp
+++ b/src/compiler/Compiler.cpp
@@ -1,5 +1,5 @@
//
-// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved.
+// 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.
//
@@ -8,10 +8,10 @@
#include "compiler/DetectRecursion.h"
#include "compiler/ForLoopUnroll.h"
#include "compiler/Initialize.h"
+#include "compiler/MapLongVariableNames.h"
#include "compiler/ParseHelper.h"
#include "compiler/ShHandle.h"
#include "compiler/ValidateLimitations.h"
-#include "compiler/MapLongVariableNames.h"
namespace {
bool InitializeSymbolTable(
@@ -91,10 +91,13 @@
shaderSpec(spec),
builtInFunctionEmulator(type)
{
+ longNameMap = LongNameMap::GetInstance();
}
TCompiler::~TCompiler()
{
+ ASSERT(longNameMap);
+ longNameMap->Release();
}
bool TCompiler::Init(const ShBuiltInResources& resources)
@@ -246,7 +249,8 @@
void TCompiler::mapLongVariableNames(TIntermNode* root)
{
- MapLongVariableNames map(varyingLongNameMap);
+ ASSERT(longNameMap);
+ MapLongVariableNames map(longNameMap);
root->traverse(&map);
}