diff options
author | piman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-30 00:25:32 +0000 |
---|---|---|
committer | piman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-30 00:25:32 +0000 |
commit | 8350f16f65f145e137b732578491bc4cc2877784 (patch) | |
tree | ad40ac10f7947a914d5a184be2d43f98a5a5b306 /webkit/gpu | |
parent | a397169facbe431de97afec378e48132391b42f5 (diff) | |
download | chromium_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.cc | 123 | ||||
-rw-r--r-- | webkit/gpu/gl_bindings_skia_cmd_buffer.h | 22 | ||||
-rw-r--r-- | webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.cc | 7 | ||||
-rw-r--r-- | webkit/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h | 6 | ||||
-rw-r--r-- | webkit/gpu/webgraphicscontext3d_in_process_impl.h | 5 | ||||
-rw-r--r-- | webkit/gpu/webkit_gpu.gypi | 22 | ||||
-rw-r--r-- | webkit/gpu/webkit_gpu_export.h | 29 |
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_ |