Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(662)

Unified Diff: webkit/tools/pepper_test_plugin/command_buffer_pepper.cc

Issue 367002: Added Pepper 3D render context that instantiates the GPU plugin.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/tools/pepper_test_plugin/command_buffer_pepper.h ('k') | webkit/tools/pepper_test_plugin/main.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/tools/pepper_test_plugin/command_buffer_pepper.cc
===================================================================
--- webkit/tools/pepper_test_plugin/command_buffer_pepper.cc (revision 0)
+++ webkit/tools/pepper_test_plugin/command_buffer_pepper.cc (revision 0)
@@ -0,0 +1,180 @@
+// 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 "webkit/tools/pepper_test_plugin/command_buffer_pepper.h"
+
+using base::SharedMemory;
+using gpu::Buffer;
+
+CommandBufferPepper::CommandBufferPepper(NPP npp, NPNetscapeFuncs* browser)
+ : npp_(npp),
+ browser_(browser),
+ extensions_(NULL),
+ device_(NULL) {
+}
+
+CommandBufferPepper::~CommandBufferPepper() {
+ if (device_) {
+ device_->destroyContext(npp_, &context_);
+ device_ = NULL;
+ }
+}
+
+bool CommandBufferPepper::Initialize(int32 size) {
+ if (device_)
+ return false;
+
+ // Get the pepper extensions.
+ browser_->getvalue(npp_,
+ NPNVPepperExtensions,
+ reinterpret_cast<void*>(&extensions_));
+ CHECK(extensions_);
+
+ // Acquire a 3D device.
+ device_ = extensions_->acquireDevice(npp_, NPPepper3DDevice);
+ if (device_) {
+ NPDeviceContext3DConfig config;
+ config.commandBufferEntries = size;
+ if (NPERR_NO_ERROR == device_->initializeContext(npp_,
+ &config,
+ &context_)) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+Buffer CommandBufferPepper::GetRingBuffer() {
+ Buffer buffer;
+ buffer.ptr = context_.commandBuffer;
+ buffer.size = context_.commandBufferEntries * sizeof(int32);
+ return buffer;
+}
+
+int32 CommandBufferPepper::GetSize() {
+ return context_.commandBufferEntries;
+}
+
+int32 CommandBufferPepper::SyncOffsets(int32 put_offset) {
+ context_.putOffset = put_offset;
+ if (NPERR_NO_ERROR != device_->flushContext(npp_, &context_, NULL, NULL))
+ return -1;
+
+ return context_.getOffset;
+}
+
+int32 CommandBufferPepper::GetGetOffset() {
+ int32 value;
+ if (NPERR_NO_ERROR != device_->getStateContext(
+ npp_,
+ &context_,
+ NPDeviceContext3DState_GetOffset,
+ &value)) {
+ return -1;
+ }
+
+ return value;
+}
+
+void CommandBufferPepper::SetGetOffset(int32 get_offset) {
+ // Not implemented by proxy.
+ NOTREACHED();
+}
+
+int32 CommandBufferPepper::GetPutOffset() {
+ int32 value;
+ if (NPERR_NO_ERROR != device_->getStateContext(
+ npp_,
+ &context_,
+ NPDeviceContext3DState_PutOffset,
+ &value)) {
+ return -1;
+ }
+
+ return value;
+}
+
+void CommandBufferPepper::SetPutOffsetChangeCallback(
+ Callback0::Type* callback) {
+ // Not implemented by proxy.
+ NOTREACHED();
+}
+
+int32 CommandBufferPepper::CreateTransferBuffer(size_t size) {
+ int32 id;
+ if (NPERR_NO_ERROR != device_->createBuffer(npp_, &context_, size, &id))
+ return -1;
+
+ return id;
+}
+
+void CommandBufferPepper::DestroyTransferBuffer(int32 id) {
+ device_->destroyBuffer(npp_, &context_, id);
+}
+
+Buffer CommandBufferPepper::GetTransferBuffer(int32 id) {
+ NPDeviceBuffer np_buffer;
+ if (NPERR_NO_ERROR != device_->mapBuffer(npp_, &context_, id, &np_buffer))
+ return Buffer();
+
+ Buffer buffer;
+ buffer.ptr = np_buffer.ptr;
+ buffer.size = np_buffer.size;
+ return buffer;
+}
+
+int32 CommandBufferPepper::GetToken() {
+ int32 value;
+ if (NPERR_NO_ERROR != device_->getStateContext(
+ npp_,
+ &context_,
+ NPDeviceContext3DState_Token,
+ &value)) {
+ return -1;
+ }
+
+ return value;
+}
+
+void CommandBufferPepper::SetToken(int32 token) {
+ // Not implemented by proxy.
+ NOTREACHED();
+}
+
+int32 CommandBufferPepper::ResetParseError() {
+ int32 value;
+ if (NPERR_NO_ERROR != device_->getStateContext(
+ npp_,
+ &context_,
+ NPDeviceContext3DState_ParseError,
+ &value)) {
+ return -1;
+ }
+
+ return value;
+}
+
+void CommandBufferPepper::SetParseError(int32 parse_error) {
+ // Not implemented by proxy.
+ NOTREACHED();
+}
+
+bool CommandBufferPepper::GetErrorStatus() {
+ int32 value;
+ if (NPERR_NO_ERROR != device_->getStateContext(
+ npp_,
+ &context_,
+ NPDeviceContext3DState_ErrorStatus,
+ &value)) {
+ return value != 0;
+ }
+
+ return true;
+}
+
+void CommandBufferPepper::RaiseErrorStatus() {
+ // Not implemented by proxy.
+ NOTREACHED();
+}
Property changes on: webkit\tools\pepper_test_plugin\command_buffer_pepper.cc
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « webkit/tools/pepper_test_plugin/command_buffer_pepper.h ('k') | webkit/tools/pepper_test_plugin/main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698