Hash :
1acc6d40
Author :
Date :
2023-04-21T17:03:49
Vulkan: Use Android TLS for *valid* global context ... instead of just global context. This means that the majority of calls which call GetValidGlobalContext() will be faster (because they don't need to check for context loss). Bug: angleproject:8135 Change-Id: Ia91f8fadb5799088542c58d417f31c3e5028b3e0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4454769 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Igor Nazarov <i.nazarov@samsung.com> Reviewed-by: Charlie Lao <cclao@google.com>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
//
// Copyright 2002 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/translator/PoolAlloc.h"
#include "common/debug.h"
#include "common/tls.h"
angle::TLSIndex PoolIndex = TLS_INVALID_INDEX;
bool InitializePoolIndex()
{
ASSERT(PoolIndex == TLS_INVALID_INDEX);
PoolIndex = angle::CreateTLSIndex(nullptr);
return PoolIndex != TLS_INVALID_INDEX;
}
void FreePoolIndex()
{
ASSERT(PoolIndex != TLS_INVALID_INDEX);
angle::DestroyTLSIndex(PoolIndex);
PoolIndex = TLS_INVALID_INDEX;
}
angle::PoolAllocator *GetGlobalPoolAllocator()
{
ASSERT(PoolIndex != TLS_INVALID_INDEX);
return static_cast<angle::PoolAllocator *>(angle::GetTLSValue(PoolIndex));
}
void SetGlobalPoolAllocator(angle::PoolAllocator *poolAllocator)
{
ASSERT(PoolIndex != TLS_INVALID_INDEX);
angle::SetTLSValue(PoolIndex, poolAllocator);
}