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

Unified Diff: mojo/examples/pepper_container_app/graphics_3d_resource.cc

Issue 178953003: Mojo container example for hosting Pepper plugins (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 months 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
Index: mojo/examples/pepper_container_app/graphics_3d_resource.cc
diff --git a/mojo/examples/pepper_container_app/graphics_3d_resource.cc b/mojo/examples/pepper_container_app/graphics_3d_resource.cc
new file mode 100644
index 0000000000000000000000000000000000000000..334c5efc74d3a6ebfcbf04c5d12dc7995b1af554
--- /dev/null
+++ b/mojo/examples/pepper_container_app/graphics_3d_resource.cc
@@ -0,0 +1,170 @@
+// Copyright 2014 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 "mojo/examples/pepper_container_app/graphics_3d_resource.h"
+
+#include "base/logging.h"
+#include "mojo/examples/pepper_container_app/mojo_ppapi_globals.h"
+#include "mojo/examples/pepper_container_app/plugin_instance.h"
+#include "mojo/public/gles2/gles2.h"
+#include "ppapi/c/pp_errors.h"
+
+namespace mojo {
+namespace examples {
+
+namespace {
+
+gpu::CommandBuffer::State GetErrorState() {
+ gpu::CommandBuffer::State error_state;
+ error_state.error = gpu::error::kGenericError;
+ return error_state;
+}
+
+} // namespace
+
+Graphics3DResource::Graphics3DResource(PP_Instance instance)
+ : Resource(ppapi::OBJECT_IS_IMPL, instance) {
+ ScopedMessagePipeHandle pipe = MojoPpapiGlobals::Get()->CreateGLES2Context();
+ context_ = MojoGLES2CreateContext(pipe.release().value(),
+ &ContextLostThunk,
+ &DrawAnimationFrameThunk,
+ this);
+}
+
+Graphics3DResource::~Graphics3DResource() {
+ MojoGLES2DestroyContext(context_);
+}
+
+bool Graphics3DResource::IsBoundGraphics() const {
+ PluginInstance* plugin_instance =
+ MojoPpapiGlobals::Get()->GetInstance(pp_instance());
+ return plugin_instance && plugin_instance->IsBoundGraphics(pp_resource());
+}
+
+void Graphics3DResource::BindGraphics() {
+ MojoGLES2MakeCurrent(context_);
+}
+
+ppapi::thunk::PPB_Graphics3D_API* Graphics3DResource::AsPPB_Graphics3D_API() {
+ return this;
+}
+
+int32_t Graphics3DResource::GetAttribs(int32_t attrib_list[]) {
+ NOTIMPLEMENTED();
+ return PP_ERROR_FAILED;
+}
+
+int32_t Graphics3DResource::SetAttribs(const int32_t attrib_list[]) {
+ NOTIMPLEMENTED();
+ return PP_ERROR_FAILED;
+}
+
+int32_t Graphics3DResource::GetError() {
+ NOTIMPLEMENTED();
+ return PP_ERROR_FAILED;
+}
+
+int32_t Graphics3DResource::ResizeBuffers(int32_t width, int32_t height) {
+ NOTIMPLEMENTED();
+ return PP_ERROR_FAILED;
+}
+
+int32_t Graphics3DResource::SwapBuffers(
+ scoped_refptr<ppapi::TrackedCallback> callback) {
+ if (!IsBoundGraphics())
+ return PP_ERROR_FAILED;
+
+ MojoGLES2SwapBuffers();
+ return PP_OK;
+}
+
+int32_t Graphics3DResource::GetAttribMaxValue(int32_t attribute,
+ int32_t* value) {
+ NOTIMPLEMENTED();
+ return PP_ERROR_FAILED;
+}
+
+PP_Bool Graphics3DResource::SetGetBuffer(int32_t shm_id) {
+ NOTIMPLEMENTED();
+ return PP_FALSE;
+}
+
+gpu::CommandBuffer::State Graphics3DResource::GetState() {
+ NOTIMPLEMENTED();
+ return GetErrorState();
+}
+
+int32_t Graphics3DResource::CreateTransferBuffer(uint32_t size) {
+ NOTIMPLEMENTED();
+ return PP_FALSE;
+}
+
+PP_Bool Graphics3DResource::DestroyTransferBuffer(int32_t id) {
+ NOTIMPLEMENTED();
+ return PP_FALSE;
+}
+
+PP_Bool Graphics3DResource::GetTransferBuffer(int32_t id,
+ int* shm_handle,
+ uint32_t* shm_size) {
+ NOTIMPLEMENTED();
+ return PP_FALSE;
+}
+
+PP_Bool Graphics3DResource::Flush(int32_t put_offset) {
+ NOTIMPLEMENTED();
+ return PP_FALSE;
+}
+
+gpu::CommandBuffer::State Graphics3DResource::WaitForTokenInRange(int32_t start,
+ int32_t end) {
+ NOTIMPLEMENTED();
+ return GetErrorState();
+}
+
+gpu::CommandBuffer::State Graphics3DResource::WaitForGetOffsetInRange(
+ int32_t start, int32_t end) {
+ NOTIMPLEMENTED();
+ return GetErrorState();
+}
+
+void* Graphics3DResource::MapTexSubImage2DCHROMIUM(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLsizei width,
+ GLsizei height,
+ GLenum format,
+ GLenum type,
+ GLenum access) {
+ NOTIMPLEMENTED();
+ return NULL;
+}
+
+void Graphics3DResource::UnmapTexSubImage2DCHROMIUM(const void* mem) {
+ NOTIMPLEMENTED();
+}
+
+uint32_t Graphics3DResource::InsertSyncPoint() {
+ NOTIMPLEMENTED();
+ return 0;
+}
+
+void Graphics3DResource::ContextLostThunk(void* closure) {
+ static_cast<Graphics3DResource*>(closure)->ContextLost();
+}
+
+void Graphics3DResource::DrawAnimationFrameThunk(void* closure) {
+ // TODO(yzshen): Use this notification to drive the SwapBuffers() callback.
+}
+
+void Graphics3DResource::ContextLost() {
+ PluginInstance* plugin_instance =
+ MojoPpapiGlobals::Get()->GetInstance(pp_instance());
+ if (plugin_instance)
+ plugin_instance->Graphics3DContextLost();
+}
+
+} // namespace examples
+} // namespace mojo
« no previous file with comments | « mojo/examples/pepper_container_app/graphics_3d_resource.h ('k') | mojo/examples/pepper_container_app/interface_list.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698