| Index: gpu/pgl/pgl.cc
|
| ===================================================================
|
| --- gpu/pgl/pgl.cc (revision 36269)
|
| +++ gpu/pgl/pgl.cc (working copy)
|
| @@ -1,161 +0,0 @@
|
| -// Copyright (c) 2010 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_cmd_helper.h"
|
| -#include "gpu/command_buffer/client/gles2_implementation.h"
|
| -#include "gpu/command_buffer/client/gles2_lib.h"
|
| -#include "gpu/pgl/command_buffer_pepper.h"
|
| -#include "gpu/pgl/pgl.h"
|
| -
|
| -#if defined(_MSC_VER)
|
| -#define THREAD_LOCAL __declspec(thread)
|
| -#else
|
| -#define THREAD_LOCAL __thread
|
| -#endif
|
| -
|
| -namespace {
|
| -const int32 kTransferBufferSize = 512 * 1024;
|
| -
|
| -class PGLContextImpl {
|
| - public:
|
| - PGLContextImpl(NPP npp,
|
| - NPDevice* device,
|
| - NPDeviceContext3D* device_context);
|
| - ~PGLContextImpl();
|
| -
|
| - // Initlaize a PGL context with a transfer buffer of a particular size.
|
| - bool Initialize(int32 transfer_buffer_size);
|
| -
|
| - // Destroy all resources associated with the PGL context.
|
| - void Destroy();
|
| -
|
| - // Make a PGL context current for the calling thread.
|
| - static bool MakeCurrent(PGLContextImpl* pgl_context);
|
| -
|
| - // Display all content rendered since last call to SwapBuffers.
|
| - bool SwapBuffers();
|
| -
|
| - private:
|
| - PGLContextImpl(const PGLContextImpl&);
|
| - void operator=(const PGLContextImpl&);
|
| -
|
| - NPP npp_;
|
| - NPDevice* device_;
|
| - NPDeviceContext3D* device_context_;
|
| - CommandBufferPepper* command_buffer_;
|
| - gpu::gles2::GLES2CmdHelper* gles2_helper_;
|
| - int32 transfer_buffer_id_;
|
| - gpu::gles2::GLES2Implementation* gles2_implementation_;
|
| -};
|
| -
|
| -THREAD_LOCAL PGLContextImpl* g_current_pgl_context;
|
| -
|
| -PGLContextImpl::PGLContextImpl(NPP npp,
|
| - NPDevice* device,
|
| - NPDeviceContext3D* device_context)
|
| - : npp_(npp),
|
| - device_(device),
|
| - device_context_(device_context),
|
| - command_buffer_(NULL),
|
| - gles2_helper_(NULL),
|
| - transfer_buffer_id_(0),
|
| - gles2_implementation_(NULL) {
|
| -}
|
| -
|
| -PGLContextImpl::~PGLContextImpl() {
|
| - Destroy();
|
| -}
|
| -
|
| -bool PGLContextImpl::Initialize(int32 transfer_buffer_size) {
|
| - // Create and initialize the objects required to issue GLES2 calls.
|
| - command_buffer_ = new CommandBufferPepper(
|
| - npp_, device_, device_context_);
|
| - gles2_helper_ = new gpu::gles2::GLES2CmdHelper(command_buffer_);
|
| - if (gles2_helper_->Initialize()) {
|
| - transfer_buffer_id_ =
|
| - command_buffer_->CreateTransferBuffer(kTransferBufferSize);
|
| - gpu::Buffer transfer_buffer =
|
| - command_buffer_->GetTransferBuffer(transfer_buffer_id_);
|
| - if (transfer_buffer.ptr) {
|
| - gles2_implementation_ = new gpu::gles2::GLES2Implementation(
|
| - gles2_helper_,
|
| - transfer_buffer.size,
|
| - transfer_buffer.ptr,
|
| - transfer_buffer_id_);
|
| - return true;
|
| - }
|
| - }
|
| -
|
| - // Tear everything down if initialization failed.
|
| - Destroy();
|
| - return false;
|
| -}
|
| -
|
| -void PGLContextImpl::Destroy() {
|
| - delete gles2_implementation_;
|
| - gles2_implementation_ = NULL;
|
| -
|
| - if (command_buffer_ && transfer_buffer_id_ != 0) {
|
| - command_buffer_->DestroyTransferBuffer(transfer_buffer_id_);
|
| - transfer_buffer_id_ = 0;
|
| - }
|
| -
|
| - delete gles2_helper_;
|
| - gles2_helper_ = NULL;
|
| -
|
| - delete command_buffer_;
|
| - command_buffer_ = NULL;
|
| -}
|
| -
|
| -bool PGLContextImpl::MakeCurrent(PGLContextImpl* pgl_context) {
|
| - g_current_pgl_context = pgl_context;
|
| - if (pgl_context)
|
| - gles2::g_gl_impl = pgl_context->gles2_implementation_;
|
| - else
|
| - gles2::g_gl_impl = NULL;
|
| -
|
| - return true;
|
| -}
|
| -
|
| -bool PGLContextImpl::SwapBuffers() {
|
| - gles2_implementation_->SwapBuffers();
|
| - return true;
|
| -}
|
| -} // namespace anonymous
|
| -
|
| -extern "C" {
|
| -
|
| -PGLContext pglCreateContext(NPP npp,
|
| - NPDevice* device,
|
| - NPDeviceContext3D* device_context) {
|
| - PGLContextImpl* pgl_context = new PGLContextImpl(
|
| - npp, device, device_context);
|
| - if (pgl_context->Initialize(kTransferBufferSize)) {
|
| - return pgl_context;
|
| - }
|
| -
|
| - delete pgl_context;
|
| - return NULL;
|
| -}
|
| -
|
| -PGLBoolean pglMakeCurrent(PGLContext pgl_context) {
|
| - return PGLContextImpl::MakeCurrent(static_cast<PGLContextImpl*>(pgl_context));
|
| -}
|
| -
|
| -PGLBoolean pglSwapBuffers() {
|
| - if (!g_current_pgl_context)
|
| - return false;
|
| -
|
| - return g_current_pgl_context->SwapBuffers();
|
| -}
|
| -
|
| -PGLBoolean pglDestroyContext(PGLContext pgl_context) {
|
| - if (!pgl_context)
|
| - return false;
|
| -
|
| - delete pgl_context;
|
| - return true;
|
| -}
|
| -
|
| -} // extern "C"
|
|
|