summaryrefslogtreecommitdiffstats
path: root/webkit/gpu
diff options
context:
space:
mode:
authorpiman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-30 00:25:32 +0000
committerpiman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-30 00:25:32 +0000
commit8350f16f65f145e137b732578491bc4cc2877784 (patch)
treead40ac10f7947a914d5a184be2d43f98a5a5b306 /webkit/gpu
parenta397169facbe431de97afec378e48132391b42f5 (diff)
downloadchromium_src-8350f16f65f145e137b732578491bc4cc2877784.zip
chromium_src-8350f16f65f145e137b732578491bc4cc2877784.tar.gz
chromium_src-8350f16f65f145e137b732578491bc4cc2877784.tar.bz2
Move gl_bindings_skia_cmd_buffer into webkit_gpu and make the latter a component
webkit_gpu (implicitly) depends on webkit_glue (and its deep dependencies) just because of this. Moving gl_bindings_skia_cmd_buffer here allows ui/compositor to just depend on webkit_gpu and not glue any more. It also makes somewhat more sense. webkit_gpu should be a component because it's used by both ui/compositor and content/. I think we've been lucky so far without it because each component uses a different subset of webkit_gpu. BUG=159278 Review URL: https://chromiumcodereview.appspot.com/11348231 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@170303 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/gpu')
-rw-r--r--webkit/gpu/gl_bindings_skia_cmd_buffer.cc123
-rw-r--r--webkit/gpu/gl_bindings_skia_cmd_buffer.h22
-rw-r--r--webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc7
-rw-r--r--webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h6
-rw-r--r--webkit/gpu/webgraphicscontext3d_in_process_impl.h5
-rw-r--r--webkit/gpu/webkit_gpu.gypi22
-rw-r--r--webkit/gpu/webkit_gpu_export.h29
7 files changed, 202 insertions, 12 deletions
diff --git a/webkit/gpu/gl_bindings_skia_cmd_buffer.cc b/webkit/gpu/gl_bindings_skia_cmd_buffer.cc
new file mode 100644
index 0000000..d30afe3
--- /dev/null
+++ b/webkit/gpu/gl_bindings_skia_cmd_buffer.cc
@@ -0,0 +1,123 @@
+// 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.
+
+#include "webkit/gpu/gl_bindings_skia_cmd_buffer.h"
+
+#ifndef GL_GLEXT_PROTOTYPES
+#define GL_GLEXT_PROTOTYPES
+#endif
+#include "third_party/khronos/GLES2/gl2.h"
+#include "third_party/khronos/GLES2/gl2ext.h"
+#include "third_party/skia/include/gpu/gl/GrGLInterface.h"
+
+namespace webkit {
+namespace gpu {
+
+GrGLInterface* CreateCommandBufferSkiaGLBinding() {
+ GrGLInterface* interface = new GrGLInterface;
+ interface->fBindingsExported = kES2_GrGLBinding;
+ interface->fActiveTexture = glActiveTexture;
+ interface->fAttachShader = glAttachShader;
+ interface->fBindAttribLocation = glBindAttribLocation;
+ interface->fBindBuffer = glBindBuffer;
+ interface->fBindTexture = glBindTexture;
+ interface->fBlendColor = glBlendColor;
+ interface->fBlendFunc = glBlendFunc;
+ interface->fBufferData = glBufferData;
+ interface->fBufferSubData = glBufferSubData;
+ interface->fClear = glClear;
+ interface->fClearColor = glClearColor;
+ interface->fClearStencil = glClearStencil;
+ interface->fColorMask = glColorMask;
+ interface->fCompileShader = glCompileShader;
+ interface->fCompressedTexImage2D = glCompressedTexImage2D;
+ interface->fCreateProgram = glCreateProgram;
+ interface->fCreateShader = glCreateShader;
+ interface->fCullFace = glCullFace;
+ interface->fDeleteBuffers = glDeleteBuffers;
+ interface->fDeleteProgram = glDeleteProgram;
+ interface->fDeleteShader = glDeleteShader;
+ interface->fDeleteTextures = glDeleteTextures;
+ interface->fDepthMask = glDepthMask;
+ interface->fDisable = glDisable;
+ interface->fDisableVertexAttribArray = glDisableVertexAttribArray;
+ interface->fDrawArrays = glDrawArrays;
+ interface->fDrawElements = glDrawElements;
+ interface->fEnable = glEnable;
+ interface->fEnableVertexAttribArray = glEnableVertexAttribArray;
+ interface->fFinish = glFinish;
+ interface->fFlush = glFlush;
+ interface->fFrontFace = glFrontFace;
+ interface->fGenBuffers = glGenBuffers;
+ interface->fGenTextures = glGenTextures;
+ interface->fGetBufferParameteriv = glGetBufferParameteriv;
+ interface->fGetError = glGetError;
+ interface->fGetIntegerv = glGetIntegerv;
+ interface->fGetProgramInfoLog = glGetProgramInfoLog;
+ interface->fGetProgramiv = glGetProgramiv;
+ interface->fGetShaderInfoLog = glGetShaderInfoLog;
+ interface->fGetShaderiv = glGetShaderiv;
+ interface->fGetString = glGetString;
+ interface->fGetUniformLocation = glGetUniformLocation;
+ interface->fLineWidth = glLineWidth;
+ interface->fLinkProgram = glLinkProgram;
+ interface->fPixelStorei = glPixelStorei;
+ interface->fReadPixels = glReadPixels;
+ interface->fScissor = glScissor;
+ interface->fShaderSource = glShaderSource;
+ interface->fStencilFunc = glStencilFunc;
+ interface->fStencilFuncSeparate = glStencilFuncSeparate;
+ interface->fStencilMask = glStencilMask;
+ interface->fStencilMaskSeparate = glStencilMaskSeparate;
+ interface->fStencilOp = glStencilOp;
+ interface->fStencilOpSeparate = glStencilOpSeparate;
+ interface->fTexImage2D = glTexImage2D;
+ interface->fTexParameteri = glTexParameteri;
+ interface->fTexParameteriv = glTexParameteriv;
+ interface->fTexStorage2D = glTexStorage2DEXT;
+ interface->fTexSubImage2D = glTexSubImage2D;
+ interface->fUniform1f = glUniform1f;
+ interface->fUniform1i = glUniform1i;
+ interface->fUniform1fv = glUniform1fv;
+ interface->fUniform1iv = glUniform1iv;
+ interface->fUniform2f = glUniform2f;
+ interface->fUniform2i = glUniform2i;
+ interface->fUniform2fv = glUniform2fv;
+ interface->fUniform2iv = glUniform2iv;
+ interface->fUniform3f = glUniform3f;
+ interface->fUniform3i = glUniform3i;
+ interface->fUniform3fv = glUniform3fv;
+ interface->fUniform3iv = glUniform3iv;
+ interface->fUniform4f = glUniform4f;
+ interface->fUniform4i = glUniform4i;
+ interface->fUniform4fv = glUniform4fv;
+ interface->fUniform4iv = glUniform4iv;
+ interface->fUniformMatrix2fv = glUniformMatrix2fv;
+ interface->fUniformMatrix3fv = glUniformMatrix3fv;
+ interface->fUniformMatrix4fv = glUniformMatrix4fv;
+ interface->fUseProgram = glUseProgram;
+ interface->fVertexAttrib4fv = glVertexAttrib4fv;
+ interface->fVertexAttribPointer = glVertexAttribPointer;
+ interface->fViewport = glViewport;
+ interface->fBindFramebuffer = glBindFramebuffer;
+ interface->fBindRenderbuffer = glBindRenderbuffer;
+ interface->fCheckFramebufferStatus = glCheckFramebufferStatus;
+ interface->fDeleteFramebuffers = glDeleteFramebuffers;
+ interface->fDeleteRenderbuffers = glDeleteRenderbuffers;
+ interface->fFramebufferRenderbuffer = glFramebufferRenderbuffer;
+ interface->fFramebufferTexture2D = glFramebufferTexture2D;
+ interface->fGenFramebuffers = glGenFramebuffers;
+ interface->fGenRenderbuffers = glGenRenderbuffers;
+ interface->fGetFramebufferAttachmentParameteriv =
+ glGetFramebufferAttachmentParameteriv;
+ interface->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv;
+ interface->fRenderbufferStorage = glRenderbufferStorage;
+ interface->fRenderbufferStorageMultisample =
+ glRenderbufferStorageMultisampleEXT;
+ interface->fBlitFramebuffer = glBlitFramebufferEXT;
+ return interface;
+}
+
+} // namespace gpu
+} // namespace webkit
diff --git a/webkit/gpu/gl_bindings_skia_cmd_buffer.h b/webkit/gpu/gl_bindings_skia_cmd_buffer.h
new file mode 100644
index 0000000..9ace2c1
--- /dev/null
+++ b/webkit/gpu/gl_bindings_skia_cmd_buffer.h
@@ -0,0 +1,22 @@
+// 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.
+
+#ifndef WEBKIT_GPU_GL_BINDINGS_SKIA_CMD_BUFFER_H_
+#define WEBKIT_GPU_GL_BINDINGS_SKIA_CMD_BUFFER_H_
+
+#include "webkit/gpu/webkit_gpu_export.h"
+
+struct GrGLInterface;
+
+namespace webkit {
+namespace gpu {
+
+// The GPU back-end for skia requires pointers to GL functions. This function
+// returns a binding for skia-gpu to the cmd buffers GL.
+WEBKIT_GPU_EXPORT GrGLInterface* CreateCommandBufferSkiaGLBinding();
+
+} // namespace gpu
+} // namespace webkit
+
+#endif // WEBKIT_GLUE_GL_BINDINGS_SKIA_CMD_BUFFER_H_
diff --git a/webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc b/webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc
index e738004..e402542 100644
--- a/webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc
+++ b/webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc
@@ -33,13 +33,10 @@
#include "gpu/command_buffer/service/context_group.h"
#include "gpu/command_buffer/service/transfer_buffer_manager.h"
#include "gpu/command_buffer/service/gpu_scheduler.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
#include "ui/gl/gl_context.h"
#include "ui/gl/gl_share_group.h"
#include "ui/gl/gl_surface.h"
-#include "webkit/glue/gl_bindings_skia_cmd_buffer.h"
+#include "webkit/gpu/gl_bindings_skia_cmd_buffer.h"
using gpu::Buffer;
using gpu::CommandBuffer;
@@ -1657,7 +1654,7 @@ WGC3Dboolean WebGraphicsContext3DInProcessCommandBufferImpl::
GrGLInterface* WebGraphicsContext3DInProcessCommandBufferImpl::
onCreateGrGLInterface() {
- return webkit_glue::CreateCommandBufferSkiaGLBinding();
+ return CreateCommandBufferSkiaGLBinding();
}
void WebGraphicsContext3DInProcessCommandBufferImpl::OnContextLost() {
diff --git a/webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h b/webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h
index ec9a8c0..8e1c10c 100644
--- a/webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h
+++ b/webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h
@@ -9,10 +9,12 @@
#include <vector>
+#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebGraphicsContext3D.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h"
#include "ui/gfx/native_widget_types.h"
+#include "webkit/gpu/webkit_gpu_export.h"
#if defined(USE_SKIA)
#define FLIP_FRAMEBUFFER_VERTICALLY
@@ -44,8 +46,8 @@ namespace gpu {
class GLInProcessContext;
-class WebGraphicsContext3DInProcessCommandBufferImpl
- : public WebKit::WebGraphicsContext3D {
+class WEBKIT_GPU_EXPORT WebGraphicsContext3DInProcessCommandBufferImpl
+ : public NON_EXPORTED_BASE(WebKit::WebGraphicsContext3D) {
public:
WebGraphicsContext3DInProcessCommandBufferImpl();
diff --git a/webkit/gpu/webgraphicscontext3d_in_process_impl.h b/webkit/gpu/webgraphicscontext3d_in_process_impl.h
index 582e873..bd36c99 100644
--- a/webkit/gpu/webgraphicscontext3d_in_process_impl.h
+++ b/webkit/gpu/webgraphicscontext3d_in_process_impl.h
@@ -8,12 +8,14 @@
#include <list>
#include <set>
+#include "base/compiler_specific.h"
#include "base/hash_tables.h"
#include "base/memory/ref_counted.h"
#include "third_party/angle/include/GLSLANG/ShaderLang.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebGraphicsContext3D.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h"
#include "ui/gfx/native_widget_types.h"
+#include "webkit/gpu/webkit_gpu_export.h"
#if !defined(OS_MACOSX)
#define FLIP_FRAMEBUFFER_VERTICALLY
@@ -51,7 +53,8 @@ namespace gpu {
// It is provided for support of test_shell and any Chromium ports
// where an in-renderer WebGL implementation would be helpful.
-class WebGraphicsContext3DInProcessImpl : public WebGraphicsContext3D {
+class WEBKIT_GPU_EXPORT WebGraphicsContext3DInProcessImpl :
+ public NON_EXPORTED_BASE(WebGraphicsContext3D) {
public:
// Creates a WebGraphicsContext3DInProcessImpl for a given window. If window
// is gfx::kNullPluginWindow, then it creates an offscreen context.
diff --git a/webkit/gpu/webkit_gpu.gypi b/webkit/gpu/webkit_gpu.gypi
index 85e1846..acffd28 100644
--- a/webkit/gpu/webkit_gpu.gypi
+++ b/webkit/gpu/webkit_gpu.gypi
@@ -3,10 +3,19 @@
# found in the LICENSE file.
{
+ 'variables': {
+ 'conditions': [
+ ['inside_chromium_build==0', {
+ 'webkit_src_dir': '../../../../..',
+ },{
+ 'webkit_src_dir': '../../third_party/WebKit',
+ }],
+ ],
+ },
'targets': [
{
'target_name': 'webkit_gpu',
- 'type': 'static_library',
+ 'type': '<(component)',
'variables': { 'enable_wexit_time_destructors': 1, },
'dependencies': [
'<(DEPTH)/base/base.gyp:base',
@@ -16,14 +25,16 @@
'<(DEPTH)/gpu/gpu.gyp:command_buffer_client',
'<(DEPTH)/gpu/gpu.gyp:gles2_c_lib',
'<(DEPTH)/gpu/gpu.gyp:gles2_implementation',
+ '<(DEPTH)/skia/skia.gyp:skia',
'<(DEPTH)/third_party/angle/src/build_angle.gyp:translator_glsl',
'<(DEPTH)/ui/gl/gl.gyp:gl',
- ],
- 'include_dirs': [
- '<(DEPTH)/skia/config',
+ '<(DEPTH)/ui/ui.gyp:ui',
+ '<(webkit_src_dir)/Source/WebKit/chromium/WebKit.gyp:webkit',
],
'sources': [
# This list contains all .h and .cc in gpu except for test code.
+ 'gl_bindings_skia_cmd_buffer.cc',
+ 'gl_bindings_skia_cmd_buffer.h',
'webgraphicscontext3d_in_process_command_buffer_impl.cc',
'webgraphicscontext3d_in_process_command_buffer_impl.h',
'webgraphicscontext3d_in_process_impl.cc',
@@ -37,6 +48,9 @@
],
}],
],
+ 'defines': [
+ 'WEBKIT_GPU_IMPLEMENTATION',
+ ],
},
],
}
diff --git a/webkit/gpu/webkit_gpu_export.h b/webkit/gpu/webkit_gpu_export.h
new file mode 100644
index 0000000..486f78e
--- /dev/null
+++ b/webkit/gpu/webkit_gpu_export.h
@@ -0,0 +1,29 @@
+// Copyright (c) 2012 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 WEBKIT_GPU_WEBKIT_GPU_EXPORT_H_
+#define WEBKIT_GPU_WEBKIT_GPU_EXPORT_H_
+
+#if defined(COMPONENT_BUILD)
+#if defined(WIN32)
+
+#if defined(WEBKIT_GPU_IMPLEMENTATION)
+#define WEBKIT_GPU_EXPORT __declspec(dllexport)
+#else
+#define WEBKIT_GPU_EXPORT __declspec(dllimport)
+#endif // defined(WEBKIT_GPU_IMPLEMENTATION)
+
+#else // defined(WIN32)
+#if defined(WEBKIT_GPU_IMPLEMENTATION)
+#define WEBKIT_GPU_EXPORT __attribute__((visibility("default")))
+#else
+#define WEBKIT_GPU_EXPORT
+#endif
+#endif
+
+#else // defined(COMPONENT_BUILD)
+#define WEBKIT_GPU_EXPORT
+#endif
+
+#endif // WEBKIT_GPU_WEBKIT_GPU_EXPORT_H_