summaryrefslogtreecommitdiffstats
path: root/ppapi/cpp/dev
diff options
context:
space:
mode:
Diffstat (limited to 'ppapi/cpp/dev')
-rw-r--r--ppapi/cpp/dev/context_3d_dev.cc18
-rw-r--r--ppapi/cpp/dev/context_3d_dev.h6
-rw-r--r--ppapi/cpp/dev/surface_3d_dev.cc50
-rw-r--r--ppapi/cpp/dev/surface_3d_dev.h37
4 files changed, 96 insertions, 15 deletions
diff --git a/ppapi/cpp/dev/context_3d_dev.cc b/ppapi/cpp/dev/context_3d_dev.cc
index 47f51ac..4847642 100644
--- a/ppapi/cpp/dev/context_3d_dev.cc
+++ b/ppapi/cpp/dev/context_3d_dev.cc
@@ -4,9 +4,8 @@
#include "ppapi/cpp/dev/context_3d_dev.h"
-#include "ppapi/c/pp_completion_callback.h"
-#include "ppapi/c/dev/ppb_opengles_dev.h"
#include "ppapi/c/pp_errors.h"
+#include "ppapi/cpp/dev/surface_3d_dev.h"
#include "ppapi/cpp/instance.h"
#include "ppapi/cpp/module_impl.h"
@@ -18,10 +17,6 @@ template <> const char* interface_name<PPB_Context3D_Dev>() {
return PPB_CONTEXT_3D_DEV_INTERFACE;
}
-template <> const char* interface_name<PPB_OpenGLES2_Dev>() {
- return PPB_OPENGLES2_DEV_INTERFACE;
-}
-
} // namespace
Context3D_Dev Context3D_Dev::FromResource(PP_Resource resource_id) {
@@ -36,8 +31,7 @@ Context3D_Dev::Context3D_Dev(const Instance& instance,
PP_Config3D_Dev config,
const Context3D_Dev& share_context,
const int32_t* attrib_list) {
- if (has_interface<PPB_Context3D_Dev>() &&
- has_interface<PPB_OpenGLES2_Dev>()) {
+ if (has_interface<PPB_Context3D_Dev>()) {
PassRefFromConstructor(get_interface<PPB_Context3D_Dev>()->Create(
instance.pp_instance(),
config,
@@ -46,13 +40,13 @@ Context3D_Dev::Context3D_Dev(const Instance& instance,
}
}
-int32_t Context3D_Dev::SwapBuffers() const {
+int32_t Context3D_Dev::BindSurfaces(const Surface3D_Dev& draw,
+ const Surface3D_Dev& read) {
if (!has_interface<PPB_Context3D_Dev>())
return PP_ERROR_NOINTERFACE;
- return get_interface<PPB_Context3D_Dev>()->SwapBuffers(
- pp_resource(),
- PP_BlockUntilComplete());
+ return get_interface<PPB_Context3D_Dev>()->BindSurfaces(
+ pp_resource(), draw.pp_resource(), read.pp_resource());
}
} // namespace pp
diff --git a/ppapi/cpp/dev/context_3d_dev.h b/ppapi/cpp/dev/context_3d_dev.h
index 51881f3..60521d0 100644
--- a/ppapi/cpp/dev/context_3d_dev.h
+++ b/ppapi/cpp/dev/context_3d_dev.h
@@ -12,7 +12,7 @@
namespace pp {
-class CompletionCallback;
+class Surface3D_Dev;
class Context3D_Dev : public Resource {
public:
@@ -24,8 +24,8 @@ class Context3D_Dev : public Resource {
const Context3D_Dev& share_context,
const int32_t* attrib_list);
- // TODO(alokp): Move to Surface3D.
- int32_t SwapBuffers() const;
+ int32_t BindSurfaces(const Surface3D_Dev& draw,
+ const Surface3D_Dev& read);
protected:
explicit Context3D_Dev(PP_Resource resource_id) : Resource(resource_id) {}
diff --git a/ppapi/cpp/dev/surface_3d_dev.cc b/ppapi/cpp/dev/surface_3d_dev.cc
new file mode 100644
index 0000000..a222683
--- /dev/null
+++ b/ppapi/cpp/dev/surface_3d_dev.cc
@@ -0,0 +1,50 @@
+// 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 "ppapi/cpp/dev/surface_3d_dev.h"
+
+#include "ppapi/c/pp_completion_callback.h"
+#include "ppapi/c/pp_errors.h"
+#include "ppapi/cpp/instance.h"
+#include "ppapi/cpp/module_impl.h"
+
+namespace pp {
+
+namespace {
+
+template <> const char* interface_name<PPB_Surface3D_Dev>() {
+ return PPB_SURFACE_3D_DEV_INTERFACE;
+}
+
+} // namespace
+
+Surface3D_Dev Surface3D_Dev::FromResource(PP_Resource resource_id) {
+ if (has_interface<PPB_Surface3D_Dev>() &&
+ get_interface<PPB_Surface3D_Dev>()->IsSurface3D(resource_id))
+ return Surface3D_Dev(resource_id);
+
+ return Surface3D_Dev();
+}
+
+Surface3D_Dev::Surface3D_Dev(const Instance& instance,
+ PP_Config3D_Dev config,
+ const int32_t* attrib_list) {
+ if (has_interface<PPB_Surface3D_Dev>()) {
+ PassRefFromConstructor(get_interface<PPB_Surface3D_Dev>()->Create(
+ instance.pp_instance(),
+ config,
+ attrib_list));
+ }
+}
+
+int32_t Surface3D_Dev::SwapBuffers() const {
+ if (!has_interface<PPB_Surface3D_Dev>())
+ return PP_ERROR_NOINTERFACE;
+
+ return get_interface<PPB_Surface3D_Dev>()->SwapBuffers(
+ pp_resource(),
+ PP_BlockUntilComplete());
+}
+
+} // namespace pp
diff --git a/ppapi/cpp/dev/surface_3d_dev.h b/ppapi/cpp/dev/surface_3d_dev.h
new file mode 100644
index 0000000..ff7c809
--- /dev/null
+++ b/ppapi/cpp/dev/surface_3d_dev.h
@@ -0,0 +1,37 @@
+// 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.
+
+#ifndef PPAPI_CPP_DEV_SURFACE_3D_DEV_H_
+#define PPAPI_CPP_DEV_SURFACE_3D_DEV_H_
+
+#include "ppapi/c/dev/ppb_surface_3d_dev.h"
+
+#include "ppapi/cpp/instance.h"
+#include "ppapi/cpp/resource.h"
+
+namespace pp {
+
+class CompletionCallback;
+
+class Surface3D_Dev : public Resource {
+ public:
+ // Creates an is_null() Surface3D object.
+ Surface3D_Dev() {}
+
+ Surface3D_Dev(const Instance& instance,
+ PP_Config3D_Dev config,
+ const int32_t* attrib_list);
+
+ // TODO(alokp): Add completion callback.
+ int32_t SwapBuffers() const;
+
+ protected:
+ explicit Surface3D_Dev(PP_Resource resource_id) : Resource(resource_id) {}
+ static Surface3D_Dev FromResource(PP_Resource resource_id);
+};
+
+} // namespace pp
+
+#endif // PPAPI_CPP_DEV_SURFACE_3D_DEV_H_
+