| // Copyright (c) 2009 The Chromium 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 "gpu/command_buffer/client/gles2_lib.h" |
| #include <string.h> |
| #include "gpu/command_buffer/common/thread_local.h" |
| |
| namespace gles2 { |
| |
| // This is defined in gles2_c_lib_autogen.h |
| extern "C" { |
| extern const NameToFunc g_gles2_function_table[]; |
| } |
| |
| // TODO(kbr): the use of this anonymous namespace core dumps the |
| // linker on Mac OS X 10.6 when the symbol ordering file is used |
| // namespace { |
| static gpu::ThreadLocalKey g_gl_context_key; |
| // } // namespace anonymous |
| |
| void Initialize() { |
| g_gl_context_key = gpu::ThreadLocalAlloc(); |
| } |
| |
| void Terminate() { |
| gpu::ThreadLocalFree(g_gl_context_key); |
| g_gl_context_key = 0; |
| } |
| |
| gpu::gles2::GLES2Interface* GetGLContext() { |
| return static_cast<gpu::gles2::GLES2Interface*>( |
| gpu::ThreadLocalGetValue(g_gl_context_key)); |
| } |
| |
| void SetGLContext(gpu::gles2::GLES2Interface* context) { |
| gpu::ThreadLocalSetValue(g_gl_context_key, context); |
| } |
| |
| GLES2FunctionPointer GetGLFunctionPointer(const char* name) { |
| for (const NameToFunc* named_function = g_gles2_function_table; |
| named_function->name; |
| ++named_function) { |
| if (!strcmp(name, named_function->name)) { |
| return named_function->func; |
| } |
| } |
| return nullptr; |
| } |
| |
| } // namespace gles2 |
| |
| |
| |
| |