summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/compiler/translator/Cache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/compiler/translator/Cache.cpp')
-rw-r--r--src/3rdparty/angle/src/compiler/translator/Cache.cpp99
1 files changed, 0 insertions, 99 deletions
diff --git a/src/3rdparty/angle/src/compiler/translator/Cache.cpp b/src/3rdparty/angle/src/compiler/translator/Cache.cpp
deleted file mode 100644
index 417e82403a..0000000000
--- a/src/3rdparty/angle/src/compiler/translator/Cache.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// Copyright (c) 2015 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.
-//
-
-// Cache.cpp: Implements a cache for various commonly created objects.
-
-#include <limits>
-
-#include "common/angleutils.h"
-#include "common/debug.h"
-#include "compiler/translator/Cache.h"
-
-namespace sh
-{
-
-namespace
-{
-
-class TScopedAllocator : angle::NonCopyable
-{
- public:
- TScopedAllocator(TPoolAllocator *allocator) : mPreviousAllocator(GetGlobalPoolAllocator())
- {
- SetGlobalPoolAllocator(allocator);
- }
- ~TScopedAllocator() { SetGlobalPoolAllocator(mPreviousAllocator); }
-
- private:
- TPoolAllocator *mPreviousAllocator;
-};
-
-} // namespace
-
-TCache::TypeKey::TypeKey(TBasicType basicType,
- TPrecision precision,
- TQualifier qualifier,
- unsigned char primarySize,
- unsigned char secondarySize)
-{
- static_assert(sizeof(components) <= sizeof(value), "TypeKey::value is too small");
-
- const size_t MaxEnumValue = std::numeric_limits<EnumComponentType>::max();
-
- // TODO: change to static_assert() once we deprecate MSVC 2013 support
- ASSERT(MaxEnumValue >= EbtLast && MaxEnumValue >= EbpLast && MaxEnumValue >= EvqLast &&
- "TypeKey::EnumComponentType is too small");
-
- value = 0;
- components.basicType = static_cast<EnumComponentType>(basicType);
- components.precision = static_cast<EnumComponentType>(precision);
- components.qualifier = static_cast<EnumComponentType>(qualifier);
- components.primarySize = primarySize;
- components.secondarySize = secondarySize;
-}
-
-TCache *TCache::sCache = nullptr;
-
-TCache::TCache()
-{
-}
-
-void TCache::initialize()
-{
- if (sCache == nullptr)
- {
- sCache = new TCache();
- }
-}
-
-void TCache::destroy()
-{
- SafeDelete(sCache);
-}
-
-const TType *TCache::getType(TBasicType basicType,
- TPrecision precision,
- TQualifier qualifier,
- unsigned char primarySize,
- unsigned char secondarySize)
-{
- TypeKey key(basicType, precision, qualifier, primarySize, secondarySize);
- auto it = sCache->mTypes.find(key);
- if (it != sCache->mTypes.end())
- {
- return it->second;
- }
-
- TScopedAllocator scopedAllocator(&sCache->mAllocator);
-
- TType *type = new TType(basicType, precision, qualifier, primarySize, secondarySize);
- type->realize();
- sCache->mTypes.insert(std::make_pair(key, type));
-
- return type;
-}
-
-} // namespace sh