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

Unified Diff: gpu/command_buffer/build_gles2_cmd_buffer.py

Issue 6400007: Implement proxy for 3d-related interfaces (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: separate ParamTraits<gpu::CommandBuffer::State> into own library Created 9 years, 11 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: gpu/command_buffer/build_gles2_cmd_buffer.py
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index 522be5e114c64725a9cbf512ba5362ee8f24bf54..9caa7fd9287ceda85f962886af54637882300fff 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -1,6 +1,6 @@
#!/usr/bin/python
#
-# Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
+# Copyright (c) 2011 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.
@@ -16,7 +16,7 @@ _SIZE_OF_UINT32 = 4
_SIZE_OF_COMMAND_HEADER = 4
_FIRST_SPECIFIC_COMMAND_ID = 256
-_LICENSE = """// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+_LICENSE = """// Copyright (c) 2011 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.
@@ -5356,6 +5356,84 @@ const PPB_OpenGLES2_Dev* PPB_OpenGLES_Impl::GetInterface() {
file.Close()
+ def WritePepperGLES2ProxyImplementation(self, filename):
+ """Writes the Pepper OpenGLES interface implementation."""
+
+ file = CWriter(filename)
+ file.Write(_LICENSE)
+ file.Write("// This file is auto-generated. DO NOT EDIT!\n\n")
+
+ file.Write("#include \"ppapi/proxy/ppb_opengles2_proxy.h\"\n\n")
+
+ file.Write("#include \"gpu/command_buffer/client/gles2_implementation.h\"\n")
+ file.Write("#include \"ppapi/c/pp_errors.h\"\n")
+ file.Write("#include \"ppapi/c/pp_resource.h\"\n")
+ file.Write("#include \"ppapi/c/dev/ppb_opengles_dev.h\"\n")
+ file.Write("#include \"ppapi/proxy/plugin_dispatcher.h\"\n")
+ file.Write("#include \"ppapi/proxy/plugin_resource.h\"\n")
+ file.Write("#include \"ppapi/proxy/ppb_context_3d_proxy.h\"\n\n")
+
+ file.Write("namespace pp {\n")
+ file.Write("namespace proxy {\n\n")
+ file.Write("namespace {\n\n")
+
+
+ for func in self.original_functions:
+ if not func.IsCoreGLFunction():
+ continue
+
+ original_arg = func.MakeTypedOriginalArgString("")
+ context_arg = "PP_Resource context_id"
+ if len(original_arg):
+ arg = context_arg + ", " + original_arg
+ else:
+ arg = context_arg
+ file.Write("%s %s(%s) {\n" % (func.return_type, func.name, arg))
+
+ file.Write(""" Context3D* context = PluginResource::GetAs<Context3D>(context_id);\n""")
+
+ return_str = "" if func.return_type == "void" else "return "
+ file.Write(" %scontext->gles2_impl()->%s(%s);\n" %
+ (return_str, func.original_name,
+ func.MakeOriginalArgString("")))
+ file.Write("}\n\n")
+
+ file.Write("const struct PPB_OpenGLES2_Dev ppb_opengles2 = {\n")
+ file.Write(" &")
+ file.Write(",\n &".join(
+ f.name for f in self.original_functions if f.IsCoreGLFunction()))
+ file.Write("\n")
+ file.Write("};\n\n")
+
+ file.Write("} // namespace\n")
+
+ file.Write("""
+PPB_OpenGLES2_Proxy::PPB_OpenGLES2_Proxy(Dispatcher* dispatcher,
+ const void* target_interface)
+ : InterfaceProxy(dispatcher, target_interface) {
+}
+
+PPB_OpenGLES2_Proxy::~PPB_OpenGLES2_Proxy() {
+}
+
+const void* PPB_OpenGLES2_Proxy::GetSourceInterface() const {
+ return &ppb_opengles2;
+}
+
+InterfaceID PPB_OpenGLES2_Proxy::GetInterfaceId() const {
+ return INTERFACE_ID_NONE;
+}
+
+bool PPB_OpenGLES2_Proxy::OnMessageReceived(const IPC::Message& msg) {
+ return false;
+}
+
+""")
+ file.Write("} // namespace proxy\n")
+ file.Write("} // namespace pp\n")
+
+ file.Close()
+
def WriteGLES2ToPPAPIBridge(self, filename):
"""Connects GLES2 helper library to PPB_OpenGLES2 interface"""
@@ -5399,11 +5477,13 @@ def main(argv):
help="generate a docs friendly version of the command formats.")
parser.add_option(
"--alternate-mode", type="choice",
- choices=("ppapi", "chrome_ppapi"),
+ choices=("ppapi", "chrome_ppapi", "chrome_ppapi_proxy"),
help="generate files for other projects. \"ppapi\" must be run from the "
"directory containing the ppapi directory, and will generate ppapi "
"bindings. \"chrome_ppapi\" must be run from chrome src directory and "
- "will generate chrome plumbing for ppapi.")
+ "will generate chrome plumbing for ppapi. \"chrome_ppapi_proxy\" must be "
+ "run from chrome src directory and " "will generate the glue for the"
+ "chrome IPC ppapi proxy.")
parser.add_option(
"-v", "--verbose", action="store_true",
help="prints more output.")
@@ -5421,6 +5501,10 @@ def main(argv):
gen.WritePepperGLES2Implementation(
"webkit/plugins/ppapi/ppb_opengles_impl.cc")
+ elif options.alternate_mode == "chrome_ppapi_proxy":
+ gen.WritePepperGLES2ProxyImplementation(
+ "ppapi/proxy/ppb_opengles2_proxy.cc")
+
else:
gen.WriteCommandIds("common/gles2_cmd_ids_autogen.h")
gen.WriteFormat("common/gles2_cmd_format_autogen.h")
« no previous file with comments | « chrome/common/gpu_param_traits.h ('k') | gpu/gpu.gyp » ('j') | ppapi/proxy/plugin_dispatcher.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698