From b9363b2794c6f287be68eebb361117cdfbf060ca Mon Sep 17 00:00:00 2001 From: "apatrick@chromium.org" Date: Wed, 9 Jun 2010 22:06:15 +0000 Subject: Added EGL based GLContext. Python script to generate code to dynamically bind to GL functions (native GL, OSMesa, EGL or mock GL for unit tests). This replaces GLEW because GLEW doesn't bind to the GLES dialect of GL. Moved the mock GL code into app/gfx/gl. Updated the GPU code and AcceleratedSurface to use the new GL bindings. TEST=trybots BUG=none Review URL: http://codereview.chromium.org/2134006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49332 0039d316-1c4b-4281-b951-d872f2087c98 --- gpu/command_buffer/client/gles2_implementation.h | 3 + gpu/command_buffer/common/gles2_cmd_format.h | 43 +- gpu/command_buffer/common/gles2_cmd_utils.cc | 2 + gpu/command_buffer/common/unittest_main.cc | 13 + gpu/command_buffer/service/gl_context_stub.cc | 44 -- gpu/command_buffer/service/gl_interface.cc | 20 - gpu/command_buffer/service/gl_interface.h | 563 --------------------- gpu/command_buffer/service/gl_mock.cc | 11 - gpu/command_buffer/service/gl_mock.h | 389 -------------- gpu/command_buffer/service/gl_utils.h | 95 +--- gpu/command_buffer/service/gles2_cmd_decoder.cc | 164 +++--- .../service/gles2_cmd_decoder_unittest.cc | 6 +- .../service/gles2_cmd_decoder_unittest_1.cc | 4 +- .../service/gles2_cmd_decoder_unittest_2.cc | 4 +- .../service/gles2_cmd_decoder_unittest_base.cc | 10 +- .../service/gles2_cmd_decoder_unittest_base.h | 8 +- gpu/command_buffer/service/gpu_processor.h | 4 +- gpu/command_buffer/service/gpu_processor_linux.cc | 5 +- gpu/command_buffer/service/gpu_processor_mac.cc | 22 +- gpu/command_buffer/service/gpu_processor_win.cc | 8 +- .../service/program_manager_unittest.cc | 11 +- gpu/gpu.gyp | 169 ++----- 22 files changed, 224 insertions(+), 1374 deletions(-) create mode 100644 gpu/command_buffer/common/unittest_main.cc delete mode 100644 gpu/command_buffer/service/gl_context_stub.cc delete mode 100644 gpu/command_buffer/service/gl_interface.cc delete mode 100644 gpu/command_buffer/service/gl_interface.h delete mode 100644 gpu/command_buffer/service/gl_mock.cc delete mode 100644 gpu/command_buffer/service/gl_mock.h (limited to 'gpu') diff --git a/gpu/command_buffer/client/gles2_implementation.h b/gpu/command_buffer/client/gles2_implementation.h index 5ff41a2..5875040 100644 --- a/gpu/command_buffer/client/gles2_implementation.h +++ b/gpu/command_buffer/client/gles2_implementation.h @@ -5,9 +5,12 @@ #ifndef GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_H_ #define GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_H_ +#include + #include #include #include + #include "../common/gles2_cmd_utils.h" #include "../common/scoped_ptr.h" #include "../client/gles2_cmd_helper.h" diff --git a/gpu/command_buffer/common/gles2_cmd_format.h b/gpu/command_buffer/common/gles2_cmd_format.h index 2be1e36..d32a83f 100644 --- a/gpu/command_buffer/common/gles2_cmd_format.h +++ b/gpu/command_buffer/common/gles2_cmd_format.h @@ -7,25 +7,8 @@ #ifndef GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_H_ #define GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_H_ -// This is here because service side code must include the system's version of -// the GL headers where as client side code includes the Chrome version. Also -// the unit test code must include a mock GL header. -#if defined(UNIT_TEST) - #include "../service/gl_mock.h" -#elif defined(GLES2_GPU_SERVICE) - // TODO(gman): Set this from gyp - // #define GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2 1 - #if defined(GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2) - #include // NOLINT - #else // !GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2 - #include // NOLINT - #if defined(OS_WIN) - #include // NOLINT - #endif - #endif // !GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2 -#else // !GLES2_CPU_SERVICE - #include // NOLINT -#endif // UNIT_TEST + +#include #include @@ -34,6 +17,28 @@ #include "../common/cmd_buffer_common.h" #include "../common/gles2_cmd_ids.h" +// GL types are forward declared to avoid including the GL headers. The problem +// is determining which GL headers to include from code that is common to the +// client and service sides (GLES2 or one of several GL implementations). +typedef unsigned int GLenum; +typedef unsigned int GLbitfield; +typedef unsigned int GLuint; +typedef int GLint; +typedef int GLsizei; +typedef unsigned char GLboolean; +typedef signed char GLbyte; +typedef short GLshort; +typedef unsigned char GLubyte; +typedef unsigned short GLushort; +typedef unsigned long GLulong; +typedef float GLfloat; +typedef float GLclampf; +typedef double GLdouble; +typedef double GLclampd; +typedef void GLvoid; +typedef khronos_intptr_t GLintptr; +typedef khronos_ssize_t GLsizeiptr; + namespace gpu { namespace gles2 { diff --git a/gpu/command_buffer/common/gles2_cmd_utils.cc b/gpu/command_buffer/common/gles2_cmd_utils.cc index bde062d..0f281ec 100644 --- a/gpu/command_buffer/common/gles2_cmd_utils.cc +++ b/gpu/command_buffer/common/gles2_cmd_utils.cc @@ -5,6 +5,8 @@ // This file is here so other GLES2 related files can have a common set of // includes where appropriate. +#include + #include "../common/gles2_cmd_utils.h" #include "../common/gles2_cmd_format.h" diff --git a/gpu/command_buffer/common/unittest_main.cc b/gpu/command_buffer/common/unittest_main.cc new file mode 100644 index 0000000..f0df23f --- /dev/null +++ b/gpu/command_buffer/common/unittest_main.cc @@ -0,0 +1,13 @@ +// 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 "app/gfx/gl/gl_implementation.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +int main(int argc, char** argv) { + gfx::InitializeGLBindings(gfx::kGLImplementationMockGL); + testing::InitGoogleMock(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/gpu/command_buffer/service/gl_context_stub.cc b/gpu/command_buffer/service/gl_context_stub.cc deleted file mode 100644 index d6df0b7..0000000 --- a/gpu/command_buffer/service/gl_context_stub.cc +++ /dev/null @@ -1,44 +0,0 @@ -// 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. - -// This file implements the StubGLContext. - -#include "build/build_config.h" -#include "app/gfx/gl/gl_context.h" - -namespace gpu { - -// A GLContext that does nothing for unit tests. -class StubGLContext : public gfx::GLContext { - public: - - // Implement GLContext. - virtual void Destroy() {} - virtual bool MakeCurrent() { return true; } - virtual bool IsCurrent() { return true; } - virtual bool IsOffscreen() { return true; } - virtual void SwapBuffers() {} - virtual gfx::Size GetSize() { return gfx::Size(); } - virtual void* GetHandle() { return NULL; } -}; - -} // namespace gpu - -namespace gfx { - -#if !defined(OS_MACOSX) - -GLContext* GLContext::CreateViewGLContext(PluginWindowHandle /* window */, - bool /* multisampled */) { - return new gpu::StubGLContext; -} - -#endif // OS_MACOSX - -GLContext* GLContext::CreateOffscreenGLContext( - void* /* shared_handle */) { - return new gpu::StubGLContext; -} - -} // namespace gfx diff --git a/gpu/command_buffer/service/gl_interface.cc b/gpu/command_buffer/service/gl_interface.cc deleted file mode 100644 index b077a84..0000000 --- a/gpu/command_buffer/service/gl_interface.cc +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) 2009 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 "gpu/command_buffer/service/gl_interface.h" - -namespace gles2 { - -GLInterface* GLInterface::interface_; - -void GLInterface::SetGLInterface(GLInterface* gl_interface) { - interface_ = gl_interface; -} - -GLInterface* GLInterface::GetGLInterface() { - return interface_; -} - -} // namespace gles2 - diff --git a/gpu/command_buffer/service/gl_interface.h b/gpu/command_buffer/service/gl_interface.h deleted file mode 100644 index 29ce544..0000000 --- a/gpu/command_buffer/service/gl_interface.h +++ /dev/null @@ -1,563 +0,0 @@ -// Copyright (c) 2009 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. - -// This file implements glue to a GL interface so we can mock it for unit -// testing. It has to be Desktop GL, not GLES2 as it is used to test the service -// side code. - -#ifndef GPU_COMMAND_BUFFER_SERVICE_GL_INTERFACE_H_ -#define GPU_COMMAND_BUFFER_SERVICE_GL_INTERFACE_H_ - -#include - -// These are Desktop GL constants that we want to test that our GLES2 -// implemenation does not let through. -#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B -#define GL_BGR 0x80E0 -#define GL_BGRA 0x80E1 -#define GL_UNPACK_SWAP_BYTES 0x0CF0 -#define GL_PACK_SWAP_BYTES 0x0D00 -#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 -#define GL_QUADS 0x0007 -#define GL_POLYGON 0x0009 -#define GL_FOG 0x0B60 -#define GL_CLIP_PLANE0 0x3000 -#define GL_GENERATE_MIPMAP 0x8191 -#define GL_PIXEL_PACK_BUFFER 0x88EB -#define GL_POINT_SPRITE 0x8861 -#define GL_MIN 0x8007 -#define GL_MAX 0x8008 -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_3D 0x806F -#define GL_DOUBLE 0x140A -#define GL_GEOMETRY_SHADER 0x8DD9 -#define GL_FOG_HINT 0x0C54 - -namespace gles2 { - -class GLInterface { - public: - virtual ~GLInterface() { - } - - static void SetGLInterface(GLInterface* gl_interface); - - static GLInterface* GetGLInterface(); - - virtual void ActiveTexture(GLenum texture) = 0; - - virtual void AttachShader(GLuint program, GLuint shader) = 0; - - virtual void BindAttribLocation( - GLuint program, GLuint index, const char* name) = 0; - - virtual void BindBuffer(GLenum target, GLuint buffer) = 0; - - virtual void BindFramebufferEXT(GLenum target, GLuint framebuffer) = 0; - - virtual void BindRenderbufferEXT(GLenum target, GLuint renderbuffer) = 0; - - virtual void BindTexture(GLenum target, GLuint texture) = 0; - - virtual void BlendColor( - GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) = 0; - - virtual void BlendEquation(GLenum mode) = 0; - - virtual void BlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) = 0; - - virtual void BlendFunc(GLenum sfactor, GLenum dfactor) = 0; - - virtual void BlendFuncSeparate( - GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) = 0; - - virtual void BufferData( - GLenum target, GLsizeiptr size, const void* data, GLenum usage) = 0; - - virtual void BufferSubData( - GLenum target, GLintptr offset, GLsizeiptr size, const void* data) = 0; - - virtual GLenum CheckFramebufferStatusEXT(GLenum target) = 0; - - virtual void Clear(GLbitfield mask) = 0; - - virtual void ClearColor( - GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) = 0; - - virtual void ClearDepth(GLclampf depth) = 0; - - virtual void ClearStencil(GLint s) = 0; - - virtual void ColorMask( - GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) = 0; - - virtual void CompileShader(GLuint shader) = 0; - - virtual void CompressedTexImage2D( - GLenum target, GLint level, GLenum internalformat, GLsizei width, - GLsizei height, GLint border, GLsizei imageSize, const void* data) = 0; - - virtual void CompressedTexSubImage2D( - GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, - GLsizei height, GLenum format, GLsizei imageSize, const void* data) = 0; - - virtual void CopyTexImage2D( - GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, - GLsizei width, GLsizei height, GLint border) = 0; - - virtual void CopyTexSubImage2D( - GLenum target, GLint level, GLint xoffset, GLint yoffset, - GLint x, GLint y, GLsizei width, GLsizei height) = 0; - - virtual GLuint CreateProgram() = 0; - - virtual GLuint CreateShader(GLenum type) = 0; - - virtual void CullFace(GLenum mode) = 0; - - virtual void DeleteBuffersARB(GLsizei n, const GLuint* buffers) = 0; - - virtual void DeleteFramebuffersEXT(GLsizei n, const GLuint* framebuffers) = 0; - - virtual void DeleteProgram(GLuint program) = 0; - - virtual void DeleteRenderbuffersEXT( - GLsizei n, const GLuint* renderbuffers) = 0; - - virtual void DeleteShader(GLuint shader) = 0; - - virtual void DeleteTextures(GLsizei n, const GLuint* textures) = 0; - - virtual void DepthFunc(GLenum func) = 0; - - virtual void DepthMask(GLboolean flag) = 0; - - virtual void DepthRange(GLclampf zNear, GLclampf zFar) = 0; - - virtual void DetachShader(GLuint program, GLuint shader) = 0; - - virtual void Disable(GLenum cap) = 0; - - virtual void DisableVertexAttribArray(GLuint index) = 0; - - virtual void DrawArrays(GLenum mode, GLint first, GLsizei count) = 0; - - virtual void DrawElements( - GLenum mode, GLsizei count, GLenum type, const void* indices) = 0; - - virtual void Enable(GLenum cap) = 0; - - virtual void EnableVertexAttribArray(GLuint index) = 0; - - virtual void Finish() = 0; - - virtual void Flush() = 0; - - virtual void FramebufferRenderbufferEXT( - GLenum target, GLenum attachment, GLenum renderbuffertarget, - GLuint renderbuffer) = 0; - - virtual void FramebufferTexture2DEXT( - GLenum target, GLenum attachment, GLenum textarget, GLuint texture, - GLint level) = 0; - - virtual void FrontFace(GLenum mode) = 0; - - virtual void GenBuffersARB(GLsizei n, GLuint* buffers) = 0; - - virtual void GenerateMipmapEXT(GLenum target) = 0; - - virtual void GenFramebuffersEXT(GLsizei n, GLuint* framebuffers) = 0; - - virtual void GenRenderbuffersEXT(GLsizei n, GLuint* renderbuffers) = 0; - - virtual void GenTextures(GLsizei n, GLuint* textures) = 0; - - virtual void GetActiveAttrib( - GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, - GLint* size, GLenum* type, char* name) = 0; - - virtual void GetActiveUniform( - GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, - GLint* size, GLenum* type, char* name) = 0; - - virtual void GetAttachedShaders( - GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) = 0; - - virtual GLint GetAttribLocation(GLuint program, const char* name) = 0; - - virtual void GetBooleanv(GLenum pname, GLboolean* params) = 0; - - virtual void GetBufferParameteriv( - GLenum target, GLenum pname, GLint* params) = 0; - - virtual GLenum GetError() = 0; - - virtual void GetFloatv(GLenum pname, GLfloat* params) = 0; - - virtual void GetFramebufferAttachmentParameterivEXT( - GLenum target, GLenum attachment, GLenum pname, GLint* params) = 0; - - virtual void GetIntegerv(GLenum pname, GLint* params) = 0; - - virtual void GetProgramiv(GLuint program, GLenum pname, GLint* params) = 0; - - // TODO(gman): Implement this - virtual void GetProgramInfoLog( - GLuint program, GLsizei bufsize, GLsizei* length, char* infolog) = 0; - - virtual void GetRenderbufferParameterivEXT( - GLenum target, GLenum pname, GLint* params) = 0; - - virtual void GetShaderiv(GLuint shader, GLenum pname, GLint* params) = 0; - - // TODO(gman): Implement this - virtual void GetShaderInfoLog( - GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog) = 0; - - virtual void GetShaderPrecisionFormat( - GLenum shadertype, GLenum precisiontype, GLint* range, - GLint* precision) = 0; - - // TODO(gman): Implement this - virtual void GetShaderSource( - GLuint shader, GLsizei bufsize, GLsizei* length, char* source) = 0; - - virtual const GLubyte* GetString(GLenum name) = 0; - - virtual void GetTexParameterfv( - GLenum target, GLenum pname, GLfloat* params) = 0; - - virtual void GetTexParameteriv( - GLenum target, GLenum pname, GLint* params) = 0; - - virtual void GetUniformfv( - GLuint program, GLint location, GLfloat* params) = 0; - - virtual void GetUniformiv(GLuint program, GLint location, GLint* params) = 0; - - virtual GLint GetUniformLocation(GLuint program, const char* name) = 0; - - virtual void GetVertexAttribfv( - GLuint index, GLenum pname, GLfloat* params) = 0; - - virtual void GetVertexAttribiv(GLuint index, GLenum pname, GLint* params) = 0; - - virtual void GetVertexAttribPointerv( - GLuint index, GLenum pname, void** pointer) = 0; - - virtual void Hint(GLenum target, GLenum mode) = 0; - - virtual GLboolean IsBuffer(GLuint buffer) = 0; - - virtual GLboolean IsEnabled(GLenum cap) = 0; - - virtual GLboolean IsFramebuffer(GLuint framebuffer) = 0; - - virtual GLboolean IsProgram(GLuint program) = 0; - - virtual GLboolean IsRenderbuffer(GLuint renderbuffer) = 0; - - virtual GLboolean IsShader(GLuint shader) = 0; - - virtual GLboolean IsTexture(GLuint texture) = 0; - - virtual void LineWidth(GLfloat width) = 0; - - virtual void LinkProgram(GLuint program) = 0; - - virtual void PixelStorei(GLenum pname, GLint param) = 0; - - virtual void PolygonOffset(GLfloat factor, GLfloat units) = 0; - - virtual void ReadPixels( - GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, - GLenum type, void* pixels) = 0; - - virtual void ReleaseShaderCompiler(void) = 0; - - virtual void RenderbufferStorageEXT( - GLenum target, GLenum internalformat, GLsizei width, GLsizei height) = 0; - - virtual void SampleCoverage(GLclampf value, GLboolean invert) = 0; - - virtual void Scissor(GLint x, GLint y, GLsizei width, GLsizei height) = 0; - - virtual void ShaderBinary( - GLsizei n, const GLuint* shaders, GLenum binaryformat, - const void* binary, GLsizei length) = 0; - - virtual void ShaderSource( - GLuint shader, GLsizei count, const char** str, const - GLint* length) = 0; - - virtual void StencilFunc(GLenum func, GLint ref, GLuint mask) = 0; - - virtual void StencilFuncSeparate( - GLenum face, GLenum func, GLint ref, GLuint mask) = 0; - - virtual void StencilMask(GLuint mask) = 0; - - virtual void StencilMaskSeparate(GLenum face, GLuint mask) = 0; - - virtual void StencilOp(GLenum fail, GLenum zfail, GLenum zpass) = 0; - - virtual void StencilOpSeparate( - GLenum face, GLenum fail, GLenum zfail, GLenum zpass) = 0; - - virtual void TexImage2D( - GLenum target, GLint level, GLint internalformat, GLsizei width, - GLsizei height, GLint border, GLenum format, GLenum type, - const void* pixels) = 0; - - virtual void TexParameterf(GLenum target, GLenum pname, GLfloat param) = 0; - - virtual void TexParameterfv( - GLenum target, GLenum pname, const GLfloat* params) = 0; - - virtual void TexParameteri(GLenum target, GLenum pname, GLint param) = 0; - - virtual void TexParameteriv( - GLenum target, GLenum pname, const GLint* params) = 0; - - virtual void TexSubImage2D( - GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, - GLsizei height, GLenum format, GLenum type, const void* pixels) = 0; - - virtual void Uniform1f(GLint location, GLfloat x) = 0; - - virtual void Uniform1fv(GLint location, GLsizei count, const GLfloat* v) = 0; - - virtual void Uniform1i(GLint location, GLint x) = 0; - - virtual void Uniform1iv(GLint location, GLsizei count, const GLint* v) = 0; - - virtual void Uniform2f(GLint location, GLfloat x, GLfloat y) = 0; - - virtual void Uniform2fv(GLint location, GLsizei count, const GLfloat* v) = 0; - - virtual void Uniform2i(GLint location, GLint x, GLint y) = 0; - - virtual void Uniform2iv(GLint location, GLsizei count, const GLint* v) = 0; - - virtual void Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) = 0; - - virtual void Uniform3fv(GLint location, GLsizei count, const GLfloat* v) = 0; - - virtual void Uniform3i(GLint location, GLint x, GLint y, GLint z) = 0; - - virtual void Uniform3iv(GLint location, GLsizei count, const GLint* v) = 0; - - virtual void Uniform4f( - GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) = 0; - - virtual void Uniform4fv(GLint location, GLsizei count, const GLfloat* v) = 0; - - virtual void Uniform4i( - GLint location, GLint x, GLint y, GLint z, GLint w) = 0; - - virtual void Uniform4iv(GLint location, GLsizei count, const GLint* v) = 0; - - virtual void UniformMatrix2fv( - GLint location, GLsizei count, GLboolean transpose, - const GLfloat* value) = 0; - - virtual void UniformMatrix3fv( - GLint location, GLsizei count, GLboolean transpose, - const GLfloat* value) = 0; - - virtual void UniformMatrix4fv( - GLint location, GLsizei count, GLboolean transpose, - const GLfloat* value) = 0; - - virtual void UseProgram(GLuint program) = 0; - - virtual void ValidateProgram(GLuint program) = 0; - - virtual void VertexAttrib1f(GLuint indx, GLfloat x) = 0; - - virtual void VertexAttrib1fv(GLuint indx, const GLfloat* values) = 0; - - virtual void VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) = 0; - - virtual void VertexAttrib2fv(GLuint indx, const GLfloat* values) = 0; - - virtual void VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) = 0; - - virtual void VertexAttrib3fv(GLuint indx, const GLfloat* values) = 0; - - virtual void VertexAttrib4f( - GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) = 0; - - virtual void VertexAttrib4fv(GLuint indx, const GLfloat* values) = 0; - - virtual void VertexAttribPointer( - GLuint indx, GLint size, GLenum type, GLboolean normalized, - GLsizei stride, const void* ptr) = 0; - - virtual void Viewport(GLint x, GLint y, GLsizei width, GLsizei height) = 0; - - virtual void SwapBuffers() = 0; - - virtual GLuint GetMaxValueInBuffer( - GLuint buffer_id, GLsizei count, GLenum type, GLuint offset) = 0; - - private: - static GLInterface* interface_; -}; - -} // namespace gles2 - -#define GL_IFACE_GET_FUN(name) ::gles2::GLInterface::GetGLInterface()->name - -#define glActiveTexture GL_IFACE_GET_FUN(ActiveTexture) -#define glAttachShader GL_IFACE_GET_FUN(AttachShader) -#define glBindAttribLocation GL_IFACE_GET_FUN(BindAttribLocation) -#define glBindBuffer GL_IFACE_GET_FUN(BindBuffer) -#define glBindFramebufferEXT GL_IFACE_GET_FUN(BindFramebufferEXT) -#define glBindRenderbufferEXT GL_IFACE_GET_FUN(BindRenderbufferEXT) -#define glBindTexture GL_IFACE_GET_FUN(BindTexture) -#define glBlendColor GL_IFACE_GET_FUN(BlendColor) -#define glBlendEquation GL_IFACE_GET_FUN(BlendEquation) -#define glBlendEquationSeparate GL_IFACE_GET_FUN(BlendEquationSeparate) -#define glBlendFunc GL_IFACE_GET_FUN(BlendFunc) -#define glBlendFuncSeparate GL_IFACE_GET_FUN(BlendFuncSeparate) -#define glBufferData GL_IFACE_GET_FUN(BufferData) -#define glBufferSubData GL_IFACE_GET_FUN(BufferSubData) -#define glCheckFramebufferStatusEXT GL_IFACE_GET_FUN(CheckFramebufferStatusEXT) -#define glClear GL_IFACE_GET_FUN(Clear) -#define glClearColor GL_IFACE_GET_FUN(ClearColor) -#define glClearDepth GL_IFACE_GET_FUN(ClearDepth) -#define glClearStencil GL_IFACE_GET_FUN(ClearStencil) -#define glColorMask GL_IFACE_GET_FUN(ColorMask) -#define glCompileShader GL_IFACE_GET_FUN(CompileShader) -#define glCompressedTexImage2D GL_IFACE_GET_FUN(CompressedTexImage2D) -#define glCompressedTexSubImage2D GL_IFACE_GET_FUN(CompressedTexSubImage2D) -#define glCopyTexImage2D GL_IFACE_GET_FUN(CopyTexImage2D) -#define glCopyTexSubImage2D GL_IFACE_GET_FUN(CopyTexSubImage2D) -#define glCreateProgram GL_IFACE_GET_FUN(CreateProgram) -#define glCreateShader GL_IFACE_GET_FUN(CreateShader) -#define glCullFace GL_IFACE_GET_FUN(CullFace) -#define glDeleteBuffersARB GL_IFACE_GET_FUN(DeleteBuffersARB) -#define glDeleteFramebuffersEXT GL_IFACE_GET_FUN(DeleteFramebuffersEXT) -#define glDeleteProgram GL_IFACE_GET_FUN(DeleteProgram) -#define glDeleteRenderbuffersEXT GL_IFACE_GET_FUN(DeleteRenderbuffersEXT) -#define glDeleteShader GL_IFACE_GET_FUN(DeleteShader) -#define glDeleteTextures GL_IFACE_GET_FUN(DeleteTextures) -#define glDepthFunc GL_IFACE_GET_FUN(DepthFunc) -#define glDepthMask GL_IFACE_GET_FUN(DepthMask) -#define glDepthRange GL_IFACE_GET_FUN(DepthRange) -#define glDetachShader GL_IFACE_GET_FUN(DetachShader) -#define glDisable GL_IFACE_GET_FUN(Disable) -#define glDisableVertexAttribArray GL_IFACE_GET_FUN(DisableVertexAttribArray) -#define glDrawArrays GL_IFACE_GET_FUN(DrawArrays) -#define glDrawElements GL_IFACE_GET_FUN(DrawElements) -#define glEnable GL_IFACE_GET_FUN(Enable) -#define glEnableVertexAttribArray GL_IFACE_GET_FUN(EnableVertexAttribArray) -#define glFinish GL_IFACE_GET_FUN(Finish) -#define glFlush GL_IFACE_GET_FUN(Flush) -#define glFramebufferRenderbufferEXT \ - GL_IFACE_GET_FUN(FramebufferRenderbufferEXT) -#define glFramebufferTexture2DEXT GL_IFACE_GET_FUN(FramebufferTexture2DEXT) -#define glFrontFace GL_IFACE_GET_FUN(FrontFace) -#define glGenBuffersARB GL_IFACE_GET_FUN(GenBuffersARB) -#define glGenerateMipmapEXT GL_IFACE_GET_FUN(GenerateMipmapEXT) -#define glGenFramebuffersEXT GL_IFACE_GET_FUN(GenFramebuffersEXT) -#define glGenRenderbuffersEXT GL_IFACE_GET_FUN(GenRenderbuffersEXT) -#define glGenTextures GL_IFACE_GET_FUN(GenTextures) -#define glGetActiveAttrib GL_IFACE_GET_FUN(GetActiveAttrib) -#define glGetActiveUniform GL_IFACE_GET_FUN(GetActiveUniform) -#define glGetAttachedShaders GL_IFACE_GET_FUN(GetAttachedShaders) -#define glGetAttribLocation GL_IFACE_GET_FUN(GetAttribLocation) -#define glGetBooleanv GL_IFACE_GET_FUN(GetBooleanv) -#define glGetBufferParameteriv GL_IFACE_GET_FUN(GetBufferParameteriv) -#define glGetError GL_IFACE_GET_FUN(GetError) -#define glGetFloatv GL_IFACE_GET_FUN(GetFloatv) -#define glGetFramebufferAttachmentParameterivEXT \ - GL_IFACE_GET_FUN(GetFramebufferAttachmentParameterivEXT) -#define glGetIntegerv GL_IFACE_GET_FUN(GetIntegerv) -#define glGetProgramiv GL_IFACE_GET_FUN(GetProgramiv) -#define glGetProgramInfoLog GL_IFACE_GET_FUN(GetProgramInfoLog) -#define glGetRenderbufferParameterivEXT \ - GL_IFACE_GET_FUN(GetRenderbufferParameterivEXT) -#define glGetShaderiv GL_IFACE_GET_FUN(GetShaderiv) -#define glGetShaderInfoLog GL_IFACE_GET_FUN(GetShaderInfoLog) -#define glGetShaderPrecisionFormat GL_IFACE_GET_FUN(GetShaderPrecisionFormat) -#define glGetShaderSource GL_IFACE_GET_FUN(GetShaderSource) -#define glGetString GL_IFACE_GET_FUN(GetString) -#define glGetTexParameterfv GL_IFACE_GET_FUN(GetTexParameterfv) -#define glGetTexParameteriv GL_IFACE_GET_FUN(GetTexParameteriv) -#define glGetUniformfv GL_IFACE_GET_FUN(GetUniformfv) -#define glGetUniformiv GL_IFACE_GET_FUN(GetUniformiv) -#define glGetUniformLocation GL_IFACE_GET_FUN(GetUniformLocation) -#define glGetVertexAttribfv GL_IFACE_GET_FUN(GetVertexAttribfv) -#define glGetVertexAttribiv GL_IFACE_GET_FUN(GetVertexAttribiv) -#define glGetVertexAttribPointerv GL_IFACE_GET_FUN(GetVertexAttribPointerv) -#define glHint GL_IFACE_GET_FUN(Hint) -#define glIsBuffer GL_IFACE_GET_FUN(IsBuffer) -#define glIsEnabled GL_IFACE_GET_FUN(IsEnabled) -#define glIsFramebufferEXT GL_IFACE_GET_FUN(IsFramebufferEXT) -#define glIsProgram GL_IFACE_GET_FUN(IsProgram) -#define glIsRenderbufferEXT GL_IFACE_GET_FUN(IsRenderbufferEXT) -#define glIsShader GL_IFACE_GET_FUN(IsShader) -#define glIsTexture GL_IFACE_GET_FUN(IsTexture) -#define glLineWidth GL_IFACE_GET_FUN(LineWidth) -#define glLinkProgram GL_IFACE_GET_FUN(LinkProgram) -#define glPixelStorei GL_IFACE_GET_FUN(PixelStorei) -#define glPolygonOffset GL_IFACE_GET_FUN(PolygonOffset) -#define glReadPixels GL_IFACE_GET_FUN(ReadPixels) -#define glReleaseShaderCompiler GL_IFACE_GET_FUN(ReleaseShaderCompiler) -#define glRenderbufferStorageEXT GL_IFACE_GET_FUN(RenderbufferStorageEXT) -#define glSampleCoverage GL_IFACE_GET_FUN(SampleCoverage) -#define glScissor GL_IFACE_GET_FUN(Scissor) -#define glShaderBinary GL_IFACE_GET_FUN(ShaderBinary) -#define glShaderSource GL_IFACE_GET_FUN(ShaderSource) -#define glStencilFunc GL_IFACE_GET_FUN(StencilFunc) -#define glStencilFuncSeparate GL_IFACE_GET_FUN(StencilFuncSeparate) -#define glStencilMask GL_IFACE_GET_FUN(StencilMask) -#define glStencilMaskSeparate GL_IFACE_GET_FUN(StencilMaskSeparate) -#define glStencilOp GL_IFACE_GET_FUN(StencilOp) -#define glStencilOpSeparate GL_IFACE_GET_FUN(StencilOpSeparate) -#define glTexImage2D GL_IFACE_GET_FUN(TexImage2D) -#define glTexParameterf GL_IFACE_GET_FUN(TexParameterf) -#define glTexParameterfv GL_IFACE_GET_FUN(TexParameterfv) -#define glTexParameteri GL_IFACE_GET_FUN(TexParameteri) -#define glTexParameteriv GL_IFACE_GET_FUN(TexParameteriv) -#define glTexSubImage2D GL_IFACE_GET_FUN(TexSubImage2D) -#define glUniform1f GL_IFACE_GET_FUN(Uniform1f) -#define glUniform1fv GL_IFACE_GET_FUN(Uniform1fv) -#define glUniform1i GL_IFACE_GET_FUN(Uniform1i) -#define glUniform1iv GL_IFACE_GET_FUN(Uniform1iv) -#define glUniform2f GL_IFACE_GET_FUN(Uniform2f) -#define glUniform2fv GL_IFACE_GET_FUN(Uniform2fv) -#define glUniform2i GL_IFACE_GET_FUN(Uniform2i) -#define glUniform2iv GL_IFACE_GET_FUN(Uniform2iv) -#define glUniform3f GL_IFACE_GET_FUN(Uniform3f) -#define glUniform3fv GL_IFACE_GET_FUN(Uniform3fv) -#define glUniform3i GL_IFACE_GET_FUN(Uniform3i) -#define glUniform3iv GL_IFACE_GET_FUN(Uniform3iv) -#define glUniform4f GL_IFACE_GET_FUN(Uniform4f) -#define glUniform4fv GL_IFACE_GET_FUN(Uniform4fv) -#define glUniform4i GL_IFACE_GET_FUN(Uniform4i) -#define glUniform4iv GL_IFACE_GET_FUN(Uniform4iv) -#define glUniformMatrix2fv GL_IFACE_GET_FUN(UniformMatrix2fv) -#define glUniformMatrix3fv GL_IFACE_GET_FUN(UniformMatrix3fv) -#define glUniformMatrix4fv GL_IFACE_GET_FUN(UniformMatrix4fv) -#define glUseProgram GL_IFACE_GET_FUN(UseProgram) -#define glValidateProgram GL_IFACE_GET_FUN(ValidateProgram) -#define glVertexAttrib1f GL_IFACE_GET_FUN(VertexAttrib1f) -#define glVertexAttrib1fv GL_IFACE_GET_FUN(VertexAttrib1fv) -#define glVertexAttrib2f GL_IFACE_GET_FUN(VertexAttrib2f) -#define glVertexAttrib2fv GL_IFACE_GET_FUN(VertexAttrib2fv) -#define glVertexAttrib3f GL_IFACE_GET_FUN(VertexAttrib3f) -#define glVertexAttrib3fv GL_IFACE_GET_FUN(VertexAttrib3fv) -#define glVertexAttrib4f GL_IFACE_GET_FUN(VertexAttrib4f) -#define glVertexAttrib4fv GL_IFACE_GET_FUN(VertexAttrib4fv) -#define glVertexAttribPointer GL_IFACE_GET_FUN(VertexAttribPointer) -#define glViewport GL_IFACE_GET_FUN(Viewport) - -#endif // GPU_COMMAND_BUFFER_SERVICE_GL_INTERFACE_H_ - - - diff --git a/gpu/command_buffer/service/gl_mock.cc b/gpu/command_buffer/service/gl_mock.cc deleted file mode 100644 index 12b5b34..0000000 --- a/gpu/command_buffer/service/gl_mock.cc +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) 2009 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 "gpu/command_buffer/service/gl_mock.h" - -namespace gles2 { - - -} // namespace gles2 - diff --git a/gpu/command_buffer/service/gl_mock.h b/gpu/command_buffer/service/gl_mock.h deleted file mode 100644 index 3378112..0000000 --- a/gpu/command_buffer/service/gl_mock.h +++ /dev/null @@ -1,389 +0,0 @@ -// Copyright (c) 2009 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. - -// This file implements mock GL Interface for unit testing. It has to mock -// Desktop GL, not GLES2 as it is used to test the service side code. - -#ifndef GPU_COMMAND_BUFFER_SERVICE_GL_MOCK_H_ -#define GPU_COMMAND_BUFFER_SERVICE_GL_MOCK_H_ - -#include "gpu/command_buffer/service/gl_interface.h" -#include "testing/gmock/include/gmock/gmock.h" - -namespace gles2 { - -class MockGLInterface : public GLInterface { - public: - virtual ~MockGLInterface() { - } - - MOCK_METHOD1(ActiveTexture, void(GLenum texture)); - - MOCK_METHOD2(AttachShader, void(GLuint program, GLuint shader)); - - MOCK_METHOD3(BindAttribLocation, void( - GLuint program, GLuint index, const char* name)); - - MOCK_METHOD2(BindBuffer, void(GLenum target, GLuint buffer)); - - MOCK_METHOD2(BindFramebufferEXT, void(GLenum target, GLuint framebuffer)); - - MOCK_METHOD2(BindRenderbufferEXT, void(GLenum target, GLuint renderbuffer)); - - MOCK_METHOD2(BindTexture, void(GLenum target, GLuint texture)); - - MOCK_METHOD4(BlendColor, void( - GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)); - - MOCK_METHOD1(BlendEquation, void(GLenum mode)); - - MOCK_METHOD2(BlendEquationSeparate, void(GLenum modeRGB, GLenum modeAlpha)); - - MOCK_METHOD2(BlendFunc, void(GLenum sfactor, GLenum dfactor)); - - MOCK_METHOD4(BlendFuncSeparate, void( - GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)); - - MOCK_METHOD4(BufferData, void( - GLenum target, GLsizeiptr size, const void* data, GLenum usage)); - - MOCK_METHOD4(BufferSubData, void( - GLenum target, GLintptr offset, GLsizeiptr size, const void* data)); - - MOCK_METHOD1(CheckFramebufferStatusEXT, GLenum(GLenum target)); - - MOCK_METHOD1(Clear, void(GLbitfield mask)); - - MOCK_METHOD4(ClearColor, void( - GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)); - - MOCK_METHOD1(ClearDepth, void(GLclampf depth)); - - MOCK_METHOD1(ClearStencil, void(GLint s)); - - MOCK_METHOD4(ColorMask, void( - GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)); - - MOCK_METHOD1(CompileShader, void(GLuint shader)); - - MOCK_METHOD8(CompressedTexImage2D, void( - GLenum target, GLint level, GLenum internalformat, GLsizei width, - GLsizei height, GLint border, GLsizei imageSize, const void* data)); - - MOCK_METHOD9(CompressedTexSubImage2D, void( - GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, - GLsizei height, GLenum format, GLsizei imageSize, const void* data)); - - MOCK_METHOD8(CopyTexImage2D, void( - GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, - GLsizei width, GLsizei height, GLint border)); - - MOCK_METHOD8(CopyTexSubImage2D, void( - GLenum target, GLint level, GLint xoffset, GLint yoffset, - GLint x, GLint y, GLsizei width, GLsizei height)); - - MOCK_METHOD0(CreateProgram, GLuint()); - - MOCK_METHOD1(CreateShader, GLuint(GLenum type)); - - MOCK_METHOD1(CullFace, void(GLenum mode)); - - MOCK_METHOD2(DeleteBuffersARB, void(GLsizei n, const GLuint* buffers)); - - MOCK_METHOD2(DeleteFramebuffersEXT, - void(GLsizei n, const GLuint* framebuffers)); - - MOCK_METHOD1(DeleteProgram, void(GLuint program)); - - MOCK_METHOD2(DeleteRenderbuffersEXT, void( - GLsizei n, const GLuint* renderbuffers)); - - MOCK_METHOD1(DeleteShader, void(GLuint shader)); - - MOCK_METHOD2(DeleteTextures, void(GLsizei n, const GLuint* textures)); - - MOCK_METHOD1(DepthFunc, void(GLenum func)); - - MOCK_METHOD1(DepthMask, void(GLboolean flag)); - - MOCK_METHOD2(DepthRange, void(GLclampf zNear, GLclampf zFar)); - - MOCK_METHOD2(DetachShader, void(GLuint program, GLuint shader)); - - MOCK_METHOD1(Disable, void(GLenum cap)); - - MOCK_METHOD1(DisableVertexAttribArray, void(GLuint index)); - - MOCK_METHOD3(DrawArrays, void(GLenum mode, GLint first, GLsizei count)); - - MOCK_METHOD4(DrawElements, void( - GLenum mode, GLsizei count, GLenum type, const void* indices)); - - MOCK_METHOD1(Enable, void(GLenum cap)); - - MOCK_METHOD1(EnableVertexAttribArray, void(GLuint index)); - - MOCK_METHOD0(Finish, void()); - - MOCK_METHOD0(Flush, void()); - - MOCK_METHOD4(FramebufferRenderbufferEXT, void( - GLenum target, GLenum attachment, GLenum renderbuffertarget, - GLuint renderbuffer)); - - MOCK_METHOD5(FramebufferTexture2DEXT, void( - GLenum target, GLenum attachment, GLenum textarget, GLuint texture, - GLint level)); - - MOCK_METHOD1(FrontFace, void(GLenum mode)); - - MOCK_METHOD2(GenBuffersARB, void(GLsizei n, GLuint* buffers)); - - MOCK_METHOD1(GenerateMipmapEXT, void(GLenum target)); - - MOCK_METHOD2(GenFramebuffersEXT, void(GLsizei n, GLuint* framebuffers)); - - MOCK_METHOD2(GenRenderbuffersEXT, void(GLsizei n, GLuint* renderbuffers)); - - MOCK_METHOD2(GenTextures, void(GLsizei n, GLuint* textures)); - - MOCK_METHOD7(GetActiveAttrib, void( - GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, - GLint* size, GLenum* type, char* name)); - - MOCK_METHOD7(GetActiveUniform, void( - GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, - GLint* size, GLenum* type, char* name)); - - MOCK_METHOD4(GetAttachedShaders, void( - GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)); - - MOCK_METHOD2(GetAttribLocation, GLint(GLuint program, const char* name)); - - MOCK_METHOD2(GetBooleanv, void(GLenum pname, GLboolean* params)); - - MOCK_METHOD3(GetBufferParameteriv, void( - GLenum target, GLenum pname, GLint* params)); - - MOCK_METHOD0(GetError, GLenum()); - - MOCK_METHOD2(GetFloatv, void(GLenum pname, GLfloat* params)); - - MOCK_METHOD4(GetFramebufferAttachmentParameterivEXT, void( - GLenum target, GLenum attachment, GLenum pname, GLint* params)); - - MOCK_METHOD2(GetIntegerv, void(GLenum pname, GLint* params)); - - MOCK_METHOD3(GetProgramiv, void(GLuint program, GLenum pname, GLint* params)); - - MOCK_METHOD4(GetProgramInfoLog, void( - GLuint program, GLsizei bufsize, GLsizei* length, char* infolog)); - - MOCK_METHOD3(GetRenderbufferParameterivEXT, void( - GLenum target, GLenum pname, GLint* params)); - - MOCK_METHOD3(GetShaderiv, void(GLuint shader, GLenum pname, GLint* params)); - - MOCK_METHOD4(GetShaderInfoLog, void( - GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog)); - - MOCK_METHOD4(GetShaderPrecisionFormat, void( - GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)); - - MOCK_METHOD4(GetShaderSource, void( - GLuint shader, GLsizei bufsize, GLsizei* length, char* source)); - - MOCK_METHOD1(GetString, const GLubyte*(GLenum name)); - - MOCK_METHOD3(GetTexParameterfv, void( - GLenum target, GLenum pname, GLfloat* params)); - - MOCK_METHOD3(GetTexParameteriv, void( - GLenum target, GLenum pname, GLint* params)); - - MOCK_METHOD3(GetUniformfv, - void(GLuint program, GLint location, GLfloat* params)); - - MOCK_METHOD3(GetUniformiv, - void(GLuint program, GLint location, GLint* params)); - - MOCK_METHOD2(GetUniformLocation, GLint(GLuint program, const char* name)); - - MOCK_METHOD3(GetVertexAttribfv, void( - GLuint index, GLenum pname, GLfloat* params)); - - MOCK_METHOD3(GetVertexAttribiv, - void(GLuint index, GLenum pname, GLint* params)); - - MOCK_METHOD3(GetVertexAttribPointerv, void( - GLuint index, GLenum pname, void** pointer)); - - MOCK_METHOD2(Hint, void(GLenum target, GLenum mode)); - - MOCK_METHOD1(IsBuffer, GLboolean(GLuint buffer)); - - MOCK_METHOD1(IsEnabled, GLboolean(GLenum cap)); - - MOCK_METHOD1(IsFramebuffer, GLboolean(GLuint framebuffer)); - - MOCK_METHOD1(IsProgram, GLboolean(GLuint program)); - - MOCK_METHOD1(IsRenderbuffer, GLboolean(GLuint renderbuffer)); - - MOCK_METHOD1(IsShader, GLboolean(GLuint shader)); - - MOCK_METHOD1(IsTexture, GLboolean(GLuint texture)); - - MOCK_METHOD1(LineWidth, void(GLfloat width)); - - MOCK_METHOD1(LinkProgram, void(GLuint program)); - - MOCK_METHOD2(PixelStorei, void(GLenum pname, GLint param)); - - MOCK_METHOD2(PolygonOffset, void(GLfloat factor, GLfloat units)); - - MOCK_METHOD7(ReadPixels, void( - GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, - GLenum type, void* pixels)); - - MOCK_METHOD0(ReleaseShaderCompiler, void()); - - MOCK_METHOD4(RenderbufferStorageEXT, void( - GLenum target, GLenum internalformat, GLsizei width, GLsizei height)); - - MOCK_METHOD2(SampleCoverage, void(GLclampf value, GLboolean invert)); - - MOCK_METHOD4(Scissor, void(GLint x, GLint y, GLsizei width, GLsizei height)); - - MOCK_METHOD5(ShaderBinary, void( - GLsizei n, const GLuint* shaders, GLenum binaryformat, - const void* binary, GLsizei length)); - - MOCK_METHOD4(ShaderSource, void( - GLuint shader, GLsizei count, const char** str, const GLint* length)); - - MOCK_METHOD3(StencilFunc, void(GLenum func, GLint ref, GLuint mask)); - - MOCK_METHOD4(StencilFuncSeparate, void( - GLenum face, GLenum func, GLint ref, GLuint mask)); - - MOCK_METHOD1(StencilMask, void(GLuint mask)); - - MOCK_METHOD2(StencilMaskSeparate, void(GLenum face, GLuint mask)); - - MOCK_METHOD3(StencilOp, void(GLenum fail, GLenum zfail, GLenum zpass)); - - MOCK_METHOD4(StencilOpSeparate, void( - GLenum face, GLenum fail, GLenum zfail, GLenum zpass)); - - MOCK_METHOD9(TexImage2D, void( - GLenum target, GLint level, GLint internalformat, GLsizei width, - GLsizei height, GLint border, GLenum format, GLenum type, - const void* pixels)); - - MOCK_METHOD3(TexParameterf, void(GLenum target, GLenum pname, GLfloat param)); - - MOCK_METHOD3(TexParameterfv, void( - GLenum target, GLenum pname, const GLfloat* params)); - - MOCK_METHOD3(TexParameteri, void(GLenum target, GLenum pname, GLint param)); - - MOCK_METHOD3(TexParameteriv, void( - GLenum target, GLenum pname, const GLint* params)); - - MOCK_METHOD9(TexSubImage2D, void( - GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, - GLsizei height, GLenum format, GLenum type, const void* pixels)); - - MOCK_METHOD2(Uniform1f, void(GLint location, GLfloat x)); - - MOCK_METHOD3(Uniform1fv, - void(GLint location, GLsizei count, const GLfloat* v)); - - MOCK_METHOD2(Uniform1i, void(GLint location, GLint x)); - - MOCK_METHOD3(Uniform1iv, void(GLint location, GLsizei count, const GLint* v)); - - MOCK_METHOD3(Uniform2f, void(GLint location, GLfloat x, GLfloat y)); - - MOCK_METHOD3(Uniform2fv, - void(GLint location, GLsizei count, const GLfloat* v)); - - MOCK_METHOD3(Uniform2i, void(GLint location, GLint x, GLint y)); - - MOCK_METHOD3(Uniform2iv, void(GLint location, GLsizei count, const GLint* v)); - - MOCK_METHOD4(Uniform3f, - void(GLint location, GLfloat x, GLfloat y, GLfloat z)); - - MOCK_METHOD3(Uniform3fv, - void(GLint location, GLsizei count, const GLfloat* v)); - - MOCK_METHOD4(Uniform3i, void(GLint location, GLint x, GLint y, GLint z)); - - MOCK_METHOD3(Uniform3iv, void(GLint location, GLsizei count, const GLint* v)); - - MOCK_METHOD5(Uniform4f, void( - GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)); - - MOCK_METHOD3(Uniform4fv, - void(GLint location, GLsizei count, const GLfloat* v)); - - MOCK_METHOD5(Uniform4i, - void(GLint location, GLint x, GLint y, GLint z, GLint w)); - - MOCK_METHOD3(Uniform4iv, void(GLint location, GLsizei count, const GLint* v)); - - MOCK_METHOD4(UniformMatrix2fv, void( - GLint location, GLsizei count, GLboolean transpose, - const GLfloat* value)); - - MOCK_METHOD4(UniformMatrix3fv, void( - GLint location, GLsizei count, GLboolean transpose, - const GLfloat* value)); - - MOCK_METHOD4(UniformMatrix4fv, void( - GLint location, GLsizei count, GLboolean transpose, - const GLfloat* value)); - - MOCK_METHOD1(UseProgram, void(GLuint program)); - - MOCK_METHOD1(ValidateProgram, void(GLuint program)); - - MOCK_METHOD2(VertexAttrib1f, void(GLuint indx, GLfloat x)); - - MOCK_METHOD2(VertexAttrib1fv, void(GLuint indx, const GLfloat* values)); - - MOCK_METHOD3(VertexAttrib2f, void(GLuint indx, GLfloat x, GLfloat y)); - - MOCK_METHOD2(VertexAttrib2fv, void(GLuint indx, const GLfloat* values)); - - MOCK_METHOD4(VertexAttrib3f, - void(GLuint indx, GLfloat x, GLfloat y, GLfloat z)); - - MOCK_METHOD2(VertexAttrib3fv, void(GLuint indx, const GLfloat* values)); - - MOCK_METHOD5(VertexAttrib4f, void( - GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)); - - MOCK_METHOD2(VertexAttrib4fv, void(GLuint indx, const GLfloat* values)); - - MOCK_METHOD6(VertexAttribPointer, void( - GLuint indx, GLint size, GLenum type, GLboolean normalized, - GLsizei stride, const void* ptr)); - - MOCK_METHOD4(Viewport, void(GLint x, GLint y, GLsizei width, GLsizei height)); - - MOCK_METHOD0(SwapBuffers, void()); - - MOCK_METHOD4(GetMaxValueInBuffer, GLuint( - GLuint buffer_id, GLsizei count, GLenum type, GLuint offset)); -}; - -} // namespace gles2 - -#endif // GPU_COMMAND_BUFFER_SERVICE_GL_MOCK_H_ - - - diff --git a/gpu/command_buffer/service/gl_utils.h b/gpu/command_buffer/service/gl_utils.h index c7cf11b..2e59179 100644 --- a/gpu/command_buffer/service/gl_utils.h +++ b/gpu/command_buffer/service/gl_utils.h @@ -8,82 +8,25 @@ #ifndef GPU_COMMAND_BUFFER_SERVICE_GL_UTILS_H_ #define GPU_COMMAND_BUFFER_SERVICE_GL_UTILS_H_ -#include - -#if defined(UNIT_TEST) - #include "gpu/command_buffer/service/gl_mock.h" - // OpenGL constants not defined in OpenGL ES 2.0 needed when compiling - // unit tests. For native OpenGL ES 2.0 backend these are not used. For OpenGL - // backend these must be defined by the local system. - #if !defined(GL_VERTEX_PROGRAM_POINT_SIZE) - #define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 - #endif - #define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 - #define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A - #define GL_MAX_VARYING_FLOATS 0x8B4B -#else - #if defined(GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2) - #include // NOLINT - - #define glClearDepth glClearDepthf - #define glDepthRange glDepthRangef - - // Buffer Objects - #define glBindBufferARB glBindBuffer - #define glBufferDataARB glBufferData - #define glBufferSubDataARB glBufferSubData - #define glDeleteBuffersARB glDeleteBuffers - #define glGenBuffersARB glGenBuffers - - // Framebuffer Objects - #define glBindFramebufferEXT glBindFramebuffer - #define glBindRenderbufferEXT glBindRenderbuffer - #define glCheckFramebufferStatusEXT glCheckFramebufferStatus - #define glDeleteFramebuffersEXT glDeleteFramebuffers - #define glDeleteRenderbuffersEXT glDeleteRenderbuffers - #define glFramebufferRenderbufferEXT glFramebufferRenderbuffer - #define glFramebufferTexture2DEXT glFramebufferTexture2D - #define glGenFramebuffersEXT glGenFramebuffers - #define glGenRenderbuffersEXT glGenRenderbuffers - #define glGetFramebufferAttachmentParameterivEXT \ - glGetFramebufferAttachmentParameteriv - #define glGetRenderbufferParameterivEXT glGetRenderbufferParameteriv - #define glIsFramebufferEXT glIsFramebuffer - #define glIsRenderbufferEXT glIsFramebuffer - #define glRenderbufferStorageEXT glRenderbufferStorage - - // Texture Objects - #define glGenerateMipmapEXT glGenerateMipmap - - #else // !GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2 - #include // NOLINT - #include - #if defined(OS_WIN) - #include // NOLINT - #elif defined(OS_LINUX) - #include // NOLINT - #endif // OS_WIN - - // GLES2 defines not part of Desktop GL - // Shader Precision-Specified Types - #define GL_LOW_FLOAT 0x8DF0 - #define GL_MEDIUM_FLOAT 0x8DF1 - #define GL_HIGH_FLOAT 0x8DF2 - #define GL_LOW_INT 0x8DF3 - #define GL_MEDIUM_INT 0x8DF4 - #define GL_HIGH_INT 0x8DF5 - #define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A - #define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B - #define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD - #define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB - #define GL_MAX_VARYING_VECTORS 0x8DFC - #define GL_SHADER_BINARY_FORMATS 0x8DF8 - #define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 - #define GL_SHADER_COMPILER 0x8DFA - - #endif // GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2 - -#endif // UNIT_TEST +#include "build/build_config.h" +#include "app/gfx/gl/gl_bindings.h" + +// GLES2 defines not part of Desktop GL +// Shader Precision-Specified Types +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_SHADER_COMPILER 0x8DFA #define GL_GLEXT_PROTOTYPES 1 diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc index 22f226e..9122b81 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc @@ -13,6 +13,7 @@ #include #include "app/gfx/gl/gl_context.h" +#include "app/gfx/gl/gl_implementation.h" #include "base/callback.h" #include "base/scoped_ptr.h" #include "base/weak_ptr.h" @@ -246,9 +247,9 @@ class FrameBuffer { // Attach a color render buffer to a frame buffer. void AttachRenderTexture(Texture* texture); - // Attach a depth stencil render buffer to a frame buffer. Note that - // this unbinds any currently bound frame buffer. - void AttachDepthStencilRenderBuffer(RenderBuffer* render_buffer); + // Attach a render buffer to a frame buffer. Note that this unbinds any + // currently bound frame buffer. + void AttachRenderBuffer(GLenum target, RenderBuffer* render_buffer); // Clear the given attached buffers. void Clear(GLbitfield buffers); @@ -1126,10 +1127,14 @@ class GLES2DecoderImpl : public base::SupportsWeakPtr, bool anti_aliased_; - // The offscreen frame buffer that the client renders to. + // The offscreen frame buffer that the client renders to. With EGL, the + // depth and stencil buffers are separate. With regular GL there is a single + // packed depth stencil buffer in offscreen_target_depth_render_buffer_. + // offscreen_target_stencil_render_buffer_ is unused. scoped_ptr offscreen_target_frame_buffer_; scoped_ptr offscreen_target_color_texture_; - scoped_ptr offscreen_target_depth_stencil_render_buffer_; + scoped_ptr offscreen_target_depth_render_buffer_; + scoped_ptr offscreen_target_stencil_render_buffer_; // The copy that is saved when SwapBuffers is called. scoped_ptr offscreen_saved_color_texture_; @@ -1249,7 +1254,6 @@ bool Texture::AllocateStorage(const gfx::Size& size) { GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); glTexImage2D(GL_TEXTURE_2D, 0, // mip level @@ -1353,17 +1357,14 @@ void FrameBuffer::AttachRenderTexture(Texture* texture) { 0); } -void FrameBuffer::AttachDepthStencilRenderBuffer(RenderBuffer* render_buffer) { +void FrameBuffer::AttachRenderBuffer(GLenum target, + RenderBuffer* render_buffer) { DCHECK_NE(id_, 0u); ScopedGLErrorSuppressor suppressor(decoder_); ScopedFrameBufferBinder binder(decoder_, id_); GLuint attach_id = render_buffer ? render_buffer->id() : 0; glFramebufferRenderbufferEXT(GL_FRAMEBUFFER, - GL_DEPTH_ATTACHMENT, - GL_RENDERBUFFER, - attach_id); - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER, - GL_STENCIL_ATTACHMENT, + target, GL_RENDERBUFFER, attach_id); } @@ -1411,6 +1412,16 @@ GLES2DecoderImpl::GLES2DecoderImpl(ContextGroup* group) attrib_0_value_.v[1] = 0.0f; attrib_0_value_.v[2] = 0.0f; attrib_0_value_.v[3] = 1.0f; + + // The shader translator is not needed for EGL because it already uses the + // GLSL ES syntax. It is translated for the unit tests because + // GLES2DecoderWithShaderTest.GetShaderInfoLogValidArgs passes the empty + // string to CompileShader and this is not a valid shader. TODO(apatrick): + // fix this test. + if (gfx::GetGLImplementation() == gfx::kGLImplementationEGLGLES2 || + gfx::GetGLImplementation() == gfx::kGLImplementationMockGL) { + use_shader_translator_ = false; + } } bool GLES2DecoderImpl::Initialize(gfx::GLContext* context, @@ -1423,8 +1434,7 @@ bool GLES2DecoderImpl::Initialize(gfx::GLContext* context, // Create a GL context that is kept in a default state and shares a namespace // with the main GL context. - default_context_.reset(gfx::GLContext::CreateOffscreenGLContext( - context_->GetHandle())); + default_context_.reset(gfx::GLContext::CreateOffscreenGLContext(context_)); if (!default_context_.get()) { Destroy(); return false; @@ -1483,7 +1493,6 @@ bool GLES2DecoderImpl::Initialize(gfx::GLContext* context, glBindTexture(GL_TEXTURE_CUBE_MAP, 0); CHECK_GL_ERROR(); -#if !defined(UNIT_TEST) if (context_->IsOffscreen()) { // Create the target frame buffer. This is the one that the client renders // directly to. @@ -1491,9 +1500,12 @@ bool GLES2DecoderImpl::Initialize(gfx::GLContext* context, offscreen_target_frame_buffer_->Create(); offscreen_target_color_texture_.reset(new Texture(this)); offscreen_target_color_texture_->Create(); - offscreen_target_depth_stencil_render_buffer_.reset( + offscreen_target_depth_render_buffer_.reset( + new RenderBuffer(this)); + offscreen_target_depth_render_buffer_->Create(); + offscreen_target_stencil_render_buffer_.reset( new RenderBuffer(this)); - offscreen_target_depth_stencil_render_buffer_->Create(); + offscreen_target_stencil_render_buffer_->Create(); // Create the saved offscreen texture. The target frame buffer is copied // here when SwapBuffers is called. @@ -1522,24 +1534,27 @@ bool GLES2DecoderImpl::Initialize(gfx::GLContext* context, // This should now be associated with ID zero. DoBindFramebuffer(GL_FRAMEBUFFER, 0); } -#endif // UNIT_TEST -#if !defined(GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2) // OpenGL ES 2.0 implicitly enables the desktop GL capability // VERTEX_PROGRAM_POINT_SIZE and doesn't expose this enum. This fact // isn't well documented; it was discovered in the Khronos OpenGL ES // mailing list archives. - glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); + if (gfx::GetGLImplementation() != gfx::kGLImplementationEGLGLES2) { + glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); + } -#if defined(GLES2_GPU_SERVICE_TRANSLATE_SHADER) && !defined(UNIT_TEST) +#if defined(GLES2_GPU_SERVICE_TRANSLATE_SHADER) // Initialize GLSL ES to GLSL translator. - if (!ShInitialize()) { - DLOG(ERROR) << "Could not initialize GLSL translator."; - Destroy(); - return false; + static bool glsl_translator_initialized = false; + if (!glsl_translator_initialized) { + if (!ShInitialize()) { + DLOG(ERROR) << "Could not initialize GLSL translator."; + Destroy(); + return false; + } + glsl_translator_initialized = true; } #endif // GLES2_GPU_SERVICE_TRANSLATE_SHADER -#endif // GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2 return true; } @@ -1655,11 +1670,7 @@ void GLES2DecoderImpl::DeleteTexturesHelper( // } // anonymous namespace bool GLES2DecoderImpl::MakeCurrent() { -#if defined(UNIT_TEST) - return true; -#else return context_->MakeCurrent(); -#endif } gfx::Size GLES2DecoderImpl::GetBoundFrameBufferSize() { @@ -1738,11 +1749,7 @@ gfx::Size GLES2DecoderImpl::GetBoundFrameBufferSize() { } else if (offscreen_target_color_texture_.get()) { return offscreen_target_color_texture_->size(); } else { -#if defined(UNIT_TEST) - return gfx::Size(INT_MAX, INT_MAX); -#else return context_->GetSize(); -#endif } } @@ -1763,20 +1770,19 @@ bool GLES2DecoderImpl::UpdateOffscreenFrameBufferSize() { return false; } -#if !defined(UNIT_TEST) + // TODO(apatrick): Fix this once ANGLE supports shared contexts. // Clear the saved offscreen color texture. Use default GL context // to ensure clear is not affected by client set state. - { // NOLINT + if (gfx::GetGLImplementation() != gfx::kGLImplementationEGLGLES2) { ScopedDefaultGLContext scoped_context(this); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, + glBindFramebufferEXT(GL_FRAMEBUFFER, offscreen_target_frame_buffer_->id()); glClear(GL_COLOR_BUFFER_BIT); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); + glBindFramebufferEXT(GL_FRAMEBUFFER, 0); if (glGetError() != GL_NO_ERROR) return false; } -#endif } // Reallocate the offscreen target buffers. @@ -1785,35 +1791,60 @@ bool GLES2DecoderImpl::UpdateOffscreenFrameBufferSize() { return false; } - if (!offscreen_target_depth_stencil_render_buffer_->AllocateStorage( - pending_offscreen_size_, GL_DEPTH24_STENCIL8)) { - return false; + if (gfx::GetGLImplementation() == gfx::kGLImplementationEGLGLES2) { + // ANGLE only allows 16-bit depth buffers to be requested. As it happens, + // it creates a 24-bit depth buffer behind the scenes. + // TODO(apatrick): Attempt to use a packed 24/8 depth stencil buffer here if + // the extension is available. + if (!offscreen_target_depth_render_buffer_->AllocateStorage( + pending_offscreen_size_, GL_DEPTH_COMPONENT16)) { + return false; + } + + if (!offscreen_target_stencil_render_buffer_->AllocateStorage( + pending_offscreen_size_, GL_STENCIL_INDEX8)) { + return false; + } + } else { + if (!offscreen_target_depth_render_buffer_->AllocateStorage( + pending_offscreen_size_, GL_DEPTH24_STENCIL8)) { + return false; + } } // Attach the offscreen target buffers to the target frame buffer. offscreen_target_frame_buffer_->AttachRenderTexture( offscreen_target_color_texture_.get()); - offscreen_target_frame_buffer_->AttachDepthStencilRenderBuffer( - offscreen_target_depth_stencil_render_buffer_.get()); + offscreen_target_frame_buffer_->AttachRenderBuffer( + GL_DEPTH_ATTACHMENT, + offscreen_target_depth_render_buffer_.get()); + if (gfx::GetGLImplementation() == gfx::kGLImplementationEGLGLES2) { + offscreen_target_frame_buffer_->AttachRenderBuffer( + GL_STENCIL_ATTACHMENT, + offscreen_target_stencil_render_buffer_.get()); + } else { + offscreen_target_frame_buffer_->AttachRenderBuffer( + GL_STENCIL_ATTACHMENT, + offscreen_target_depth_render_buffer_.get()); + } if (offscreen_target_frame_buffer_->CheckStatus() != GL_FRAMEBUFFER_COMPLETE) { return false; } -#if !defined(UNIT_TEST) + // TODO(apatrick): Fix this once ANGLE supports shared contexts. // Clear offscreen frame buffer to its initial state. Use default GL context // to ensure clear is not affected by client set state. - { // NOLINT + if (gfx::GetGLImplementation() != gfx::kGLImplementationEGLGLES2) { ScopedDefaultGLContext scoped_context(this); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, + glBindFramebufferEXT(GL_FRAMEBUFFER, offscreen_target_frame_buffer_->id()); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); + glBindFramebufferEXT(GL_FRAMEBUFFER, 0); if (glGetError() != GL_NO_ERROR) return false; } -#endif if (parent_) { // Create the saved offscreen color texture (only accessible to parent). @@ -1885,9 +1916,14 @@ void GLES2DecoderImpl::Destroy() { offscreen_target_color_texture_.reset(); } - if (offscreen_target_depth_stencil_render_buffer_.get()) { - offscreen_target_depth_stencil_render_buffer_->Destroy(); - offscreen_target_depth_stencil_render_buffer_.reset(); + if (offscreen_target_depth_render_buffer_.get()) { + offscreen_target_depth_render_buffer_->Destroy(); + offscreen_target_depth_render_buffer_.reset(); + } + + if (offscreen_target_stencil_render_buffer_.get()) { + offscreen_target_stencil_render_buffer_->Destroy(); + offscreen_target_stencil_render_buffer_.reset(); } if (offscreen_saved_color_texture_.get()) { @@ -1900,13 +1936,6 @@ void GLES2DecoderImpl::Destroy() { default_context_->Destroy(); default_context_.reset(); } - -#if !defined(GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2) && !defined(UNIT_TEST) -#if defined(GLES2_GPU_SERVICE_TRANSLATE_SHADER) - // Terminate GLSL translator. - ShFinalize(); -#endif // GLES2_GPU_SERVICE_TRANSLATE_SHADER -#endif // GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2 } void GLES2DecoderImpl::ResizeOffscreenFrameBuffer(const gfx::Size& size) { @@ -2176,8 +2205,8 @@ void GLES2DecoderImpl::DoGenerateMipmap(GLenum target) { bool GLES2DecoderImpl::GetHelper( GLenum pname, GLint* params, GLsizei* num_written) { DCHECK(num_written); - switch (pname) { -#if !defined(GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2) + if (gfx::GetGLImplementation() != gfx::kGLImplementationEGLGLES2) { + switch (pname) { case GL_IMPLEMENTATION_COLOR_READ_FORMAT: *num_written = 1; if (params) { @@ -2208,7 +2237,9 @@ bool GLES2DecoderImpl::GetHelper( *params = group_->max_vertex_uniform_vectors(); } return true; -#endif + } + } + switch (pname) { case GL_COMPRESSED_TEXTURE_FORMATS: *num_written = 0; // We don't support compressed textures. @@ -3235,7 +3266,6 @@ void GLES2DecoderImpl::DoCompileShader(GLuint client_id) { // Translate GL ES 2.0 shader to Desktop GL shader and pass that to // glShaderSource and then glCompileShader. const char* shader_src = info->source().c_str(); -#if !defined(GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2) && !defined(UNIT_TEST) #if defined(GLES2_GPU_SERVICE_TRANSLATE_SHADER) ShHandle compiler = 0; if (use_shader_translator_) { @@ -3261,21 +3291,19 @@ void GLES2DecoderImpl::DoCompileShader(GLuint client_id) { ShDestruct(compiler); return; } + info->SetTranslationStatus(true, ""); shader_src = ShGetObjectCode(compiler); } #endif // GLES2_GPU_SERVICE_TRANSLATE_SHADER -#endif // GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2 glShaderSource(info->service_id(), 1, &shader_src, NULL); glCompileShader(info->service_id()); -#if !defined(GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2) && !defined(UNIT_TEST) #ifdef GLES2_GPU_SERVICE_TRANSLATE_SHADER if (use_shader_translator_) { ShDestruct(compiler); } #endif // GLES2_GPU_SERVICE_TRANSLATE_SHADER -#endif // GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2 }; void GLES2DecoderImpl::DoGetShaderiv( @@ -4012,7 +4040,7 @@ error::Error GLES2DecoderImpl::HandleGetString( } void GLES2DecoderImpl::DoBufferData( - GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage) { + GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage) { if (!ValidateGLenumBufferTarget(target)) { SetGLError(GL_INVALID_ENUM, "glBufferData: target GL_INVALID_ENUM"); return; @@ -4677,9 +4705,7 @@ error::Error GLES2DecoderImpl::HandleSwapBuffers( offscreen_saved_color_texture_->Copy( offscreen_saved_color_texture_->size()); } else { -#if !defined(UNIT_TEST) context_->SwapBuffers(); -#endif } // TODO(kbr): when the back buffer is multisampled, then at least on Mac diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc index a45c982..989af20 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc @@ -2,18 +2,18 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "app/gfx/gl/gl_mock.h" #include "gpu/command_buffer/service/gles2_cmd_decoder.h" #include "gpu/command_buffer/common/gles2_cmd_format.h" #include "gpu/command_buffer/common/gles2_cmd_utils.h" #include "gpu/command_buffer/common/id_allocator.h" -#include "gpu/command_buffer/service/gl_mock.h" #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h" #include "gpu/command_buffer/service/cmd_buffer_engine.h" #include "gpu/command_buffer/service/context_group.h" #include "gpu/command_buffer/service/program_manager.h" #include "testing/gtest/include/gtest/gtest.h" -using ::gles2::MockGLInterface; +using ::gfx::MockGLInterface; using ::testing::_; using ::testing::DoAll; using ::testing::InSequence; @@ -1466,6 +1466,8 @@ TEST_F(GLES2DecoderTest, ReadPixels) { 31, 34, 39, 37, 32, 37, 32, 31, 34, 39, 37, 32, 37, 32, 34, }; + context_->SetSize(gfx::Size(INT_MAX, INT_MAX)); + ReadPixelsEmulator emu( kWidth, kHeight, kBytesPerPixel, kSrcPixels, kPackAlignment); typedef ReadPixels::Result Result; diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc index 7be16d6..c233d96 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc @@ -4,16 +4,16 @@ #include "gpu/command_buffer/service/gles2_cmd_decoder.h" +#include "app/gfx/gl/gl_mock.h" #include "gpu/command_buffer/common/gles2_cmd_format.h" #include "gpu/command_buffer/common/gles2_cmd_utils.h" -#include "gpu/command_buffer/service/gl_mock.h" #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h" #include "gpu/command_buffer/service/cmd_buffer_engine.h" #include "gpu/command_buffer/service/context_group.h" #include "gpu/command_buffer/service/program_manager.h" #include "testing/gtest/include/gtest/gtest.h" -using ::gles2::MockGLInterface; +using ::gfx::MockGLInterface; using ::testing::_; using ::testing::DoAll; using ::testing::InSequence; diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2.cc index 54964d8..0d29046 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2.cc @@ -4,16 +4,16 @@ #include "gpu/command_buffer/service/gles2_cmd_decoder.h" +#include "app/gfx/gl/gl_mock.h" #include "gpu/command_buffer/common/gles2_cmd_format.h" #include "gpu/command_buffer/common/gles2_cmd_utils.h" -#include "gpu/command_buffer/service/gl_mock.h" #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h" #include "gpu/command_buffer/service/cmd_buffer_engine.h" #include "gpu/command_buffer/service/context_group.h" #include "gpu/command_buffer/service/program_manager.h" #include "testing/gtest/include/gtest/gtest.h" -using ::gles2::MockGLInterface; +using ::gfx::MockGLInterface; using ::testing::_; using ::testing::DoAll; using ::testing::InSequence; diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc index bda68e8..7d61fe6 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc @@ -3,16 +3,16 @@ // found in the LICENSE file. #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h" +#include "app/gfx/gl/gl_mock.h" #include "base/string_util.h" #include "gpu/command_buffer/common/gles2_cmd_format.h" #include "gpu/command_buffer/common/gles2_cmd_utils.h" -#include "gpu/command_buffer/service/gl_mock.h" #include "gpu/command_buffer/service/cmd_buffer_engine.h" #include "gpu/command_buffer/service/context_group.h" #include "gpu/command_buffer/service/program_manager.h" #include "testing/gtest/include/gtest/gtest.h" -using ::gles2::MockGLInterface; +using ::gfx::MockGLInterface; using ::testing::_; using ::testing::DoAll; using ::testing::InSequence; @@ -29,7 +29,7 @@ namespace gles2 { void GLES2DecoderTestBase::SetUp() { gl_.reset(new StrictMock()); - ::gles2::GLInterface::SetGLInterface(gl_.get()); + ::gfx::GLInterface::SetGLInterface(gl_.get()); InSequence sequence; @@ -148,7 +148,7 @@ void GLES2DecoderTestBase::SetUp() { shared_memory_offset_; shared_memory_id_ = kSharedMemoryId; - context_.reset(gfx::GLContext::CreateOffscreenGLContext(NULL)); + context_.reset(new gfx::StubGLContext); decoder_.reset(GLES2Decoder::Create(&group_)); decoder_->Initialize(context_.get(), gfx::Size(), NULL, 0); @@ -202,7 +202,7 @@ void GLES2DecoderTestBase::TearDown() { decoder_->Destroy(); decoder_.reset(); engine_.reset(); - ::gles2::GLInterface::SetGLInterface(NULL); + ::gfx::GLInterface::SetGLInterface(NULL); gl_.reset(); } diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h index d96ef99..c90a464 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h @@ -5,14 +5,14 @@ #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_BASE_H_ #define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_BASE_H_ -#include "app/gfx/gl/gl_context.h" +#include "app/gfx/gl/gl_context_stub.h" +#include "app/gfx/gl/gl_mock.h" #include "gpu/command_buffer/common/gles2_cmd_format.h" #include "gpu/command_buffer/common/gles2_cmd_utils.h" #include "gpu/command_buffer/service/buffer_manager.h" #include "gpu/command_buffer/service/cmd_buffer_engine.h" #include "gpu/command_buffer/service/context_group.h" #include "gpu/command_buffer/service/framebuffer_manager.h" -#include "gpu/command_buffer/service/gl_mock.h" #include "gpu/command_buffer/service/gles2_cmd_decoder.h" #include "gpu/command_buffer/service/program_manager.h" #include "gpu/command_buffer/service/renderbuffer_manager.h" @@ -215,8 +215,8 @@ class GLES2DecoderTestBase : public testing::Test { } // Use StrictMock to make 100% sure we know how GL will be called. - scoped_ptr< ::testing::StrictMock< ::gles2::MockGLInterface> > gl_; - scoped_ptr context_; + scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_; + scoped_ptr context_; scoped_ptr decoder_; GLuint client_buffer_id_; diff --git a/gpu/command_buffer/service/gpu_processor.h b/gpu/command_buffer/service/gpu_processor.h index 47164cd..7d5a110 100644 --- a/gpu/command_buffer/service/gpu_processor.h +++ b/gpu/command_buffer/service/gpu_processor.h @@ -19,7 +19,7 @@ #include "gpu/command_buffer/service/context_group.h" #include "gpu/command_buffer/service/gles2_cmd_decoder.h" -#if defined(OS_MACOSX) && !defined(UNIT_TEST) +#if defined(OS_MACOSX) #include "app/surface/accelerated_surface_mac.h" #endif @@ -103,7 +103,7 @@ class GPUProcessor : public CommandBufferEngine { scoped_ptr parser_; scoped_ptr context_; -#if defined(OS_MACOSX) && !defined(UNIT_TEST) +#if defined(OS_MACOSX) scoped_ptr surface_; #endif diff --git a/gpu/command_buffer/service/gpu_processor_linux.cc b/gpu/command_buffer/service/gpu_processor_linux.cc index 614704c..dd1fe6a 100644 --- a/gpu/command_buffer/service/gpu_processor_linux.cc +++ b/gpu/command_buffer/service/gpu_processor_linux.cc @@ -27,9 +27,6 @@ bool GPUProcessor::Initialize(gfx::PluginWindowHandle window, parent_context = parent_decoder->GetGLContext(); DCHECK(parent_context); - - parent_handle = parent_context->GetHandle(); - DCHECK(parent_handle); } // Create either a view or pbuffer based GLContext. @@ -39,7 +36,7 @@ bool GPUProcessor::Initialize(gfx::PluginWindowHandle window, // TODO(apatrick): support multisampling. context_.reset(gfx::GLContext::CreateViewGLContext(window, false)); } else { - context_.reset(gfx::GLContext::CreateOffscreenGLContext(parent_handle)); + context_.reset(gfx::GLContext::CreateOffscreenGLContext(parent_context)); } if (!context_.get()) diff --git a/gpu/command_buffer/service/gpu_processor_mac.cc b/gpu/command_buffer/service/gpu_processor_mac.cc index d47681f..8191cef 100644 --- a/gpu/command_buffer/service/gpu_processor_mac.cc +++ b/gpu/command_buffer/service/gpu_processor_mac.cc @@ -20,19 +20,15 @@ bool GPUProcessor::Initialize(gfx::PluginWindowHandle window, // Get the parent decoder and the GLContext to share IDs with, if any. gles2::GLES2Decoder* parent_decoder = NULL; gfx::GLContext* parent_context = NULL; - void* parent_handle = NULL; if (parent) { parent_decoder = parent->decoder_.get(); DCHECK(parent_decoder); parent_context = parent_decoder->GetGLContext(); DCHECK(parent_context); - - parent_handle = parent_context->GetHandle(); - DCHECK(parent_handle); } - context_.reset(gfx::GLContext::CreateOffscreenGLContext(parent_handle)); + context_.reset(gfx::GLContext::CreateOffscreenGLContext(parent_context)); if (!context_.get()) return false; @@ -42,7 +38,6 @@ bool GPUProcessor::Initialize(gfx::PluginWindowHandle window, // is whether we allocate an AcceleratedSurface, which transmits the // rendering results back to the browser. if (window) { -#if !defined(UNIT_TEST) surface_.reset(new AcceleratedSurface()); // TODO(apatrick): AcceleratedSurface will not work with an OSMesa context. if (!surface_->Initialize( @@ -50,7 +45,6 @@ bool GPUProcessor::Initialize(gfx::PluginWindowHandle window, Destroy(); return false; } -#endif } return InitializeCommon(size, parent_decoder, parent_texture_id); @@ -59,51 +53,37 @@ bool GPUProcessor::Initialize(gfx::PluginWindowHandle window, } void GPUProcessor::Destroy() { -#if !defined(UNIT_TEST) if (surface_.get()) { surface_->Destroy(); } surface_.reset(); -#endif DestroyCommon(); } uint64 GPUProcessor::SetWindowSizeForIOSurface(const gfx::Size& size) { -#if !defined(UNIT_TEST) ResizeOffscreenFrameBuffer(size); decoder_->UpdateOffscreenFrameBufferSize(); return surface_->SetSurfaceSize(size); -#else - return 0; -#endif } TransportDIB::Handle GPUProcessor::SetWindowSizeForTransportDIB( const gfx::Size& size) { -#if !defined(UNIT_TEST) ResizeOffscreenFrameBuffer(size); decoder_->UpdateOffscreenFrameBufferSize(); return surface_->SetTransportDIBSize(size); -#else - return TransportDIB::DefaultHandleValue(); -#endif } void GPUProcessor::SetTransportDIBAllocAndFree( Callback2::Type* allocator, Callback1::Type* deallocator) { -#if !defined(UNIT_TEST) surface_->SetTransportDIBAllocAndFree(allocator, deallocator); -#endif } void GPUProcessor::WillSwapBuffers() { DCHECK(context_->IsCurrent()); -#if !defined(UNIT_TEST) if (surface_.get()) { surface_->SwapBuffers(); } -#endif if (wrapped_swap_buffers_callback_.get()) { wrapped_swap_buffers_callback_->Run(); diff --git a/gpu/command_buffer/service/gpu_processor_win.cc b/gpu/command_buffer/service/gpu_processor_win.cc index e37c636..85962b9 100644 --- a/gpu/command_buffer/service/gpu_processor_win.cc +++ b/gpu/command_buffer/service/gpu_processor_win.cc @@ -22,26 +22,22 @@ bool GPUProcessor::Initialize(gfx::PluginWindowHandle window, // Get the parent decoder and the GLContext to share IDs with, if any. gles2::GLES2Decoder* parent_decoder = NULL; gfx::GLContext* parent_context = NULL; - void* parent_handle = NULL; if (parent) { parent_decoder = parent->decoder_.get(); DCHECK(parent_decoder); parent_context = parent_decoder->GetGLContext(); DCHECK(parent_context); - - parent_handle = parent_context->GetHandle(); - DCHECK(parent_handle); } // Create either a view or pbuffer based GLContext. if (window) { - DCHECK(!parent_handle); + DCHECK(!parent_context); // TODO(apatrick): support multisampling. context_.reset(gfx::GLContext::CreateViewGLContext(window, false)); } else { - context_.reset(gfx::GLContext::CreateOffscreenGLContext(parent_handle)); + context_.reset(gfx::GLContext::CreateOffscreenGLContext(parent_context)); } if (!context_.get()) diff --git a/gpu/command_buffer/service/program_manager_unittest.cc b/gpu/command_buffer/service/program_manager_unittest.cc index b683927..2d8f22a 100644 --- a/gpu/command_buffer/service/program_manager_unittest.cc +++ b/gpu/command_buffer/service/program_manager_unittest.cc @@ -3,12 +3,12 @@ // found in the LICENSE file. #include "gpu/command_buffer/service/program_manager.h" +#include "app/gfx/gl/gl_mock.h" #include "base/scoped_ptr.h" #include "base/string_util.h" #include "testing/gtest/include/gtest/gtest.h" -#include "gpu/command_buffer/service/gl_mock.h" -using ::gles2::MockGLInterface; +using ::gfx::MockGLInterface; using ::testing::_; using ::testing::DoAll; using ::testing::InSequence; @@ -120,8 +120,8 @@ class ProgramManagerWithShaderTest : public testing::Test { }; virtual void SetUp() { - gl_.reset(new StrictMock()); - ::gles2::GLInterface::SetGLInterface(gl_.get()); + gl_.reset(new StrictMock()); + ::gfx::GLInterface::SetGLInterface(gl_.get()); SetupDefaultShaderExpectations(); @@ -217,12 +217,13 @@ class ProgramManagerWithShaderTest : public testing::Test { } virtual void TearDown() { + ::gfx::GLInterface::SetGLInterface(NULL); } static AttribInfo kAttribs[]; static UniformInfo kUniforms[]; - scoped_ptr > gl_; + scoped_ptr > gl_; ProgramManager manager_; diff --git a/gpu/gpu.gyp b/gpu/gpu.gyp index ef39e53..0d10e60 100644 --- a/gpu/gpu.gyp +++ b/gpu/gpu.gyp @@ -5,106 +5,9 @@ { 'variables': { 'chromium_code': 1, - # This is defined here because we need to compile this set of files - # twice with different defines. Once so it calls real GL, again so it - # calls mock GL for the unit tests. - 'gpu_service_source_files': [ - 'command_buffer/service/buffer_manager.h', - 'command_buffer/service/buffer_manager.cc', - 'command_buffer/service/framebuffer_manager.h', - 'command_buffer/service/framebuffer_manager.cc', - 'command_buffer/service/context_group.h', - 'command_buffer/service/context_group.cc', - 'command_buffer/service/gles2_cmd_decoder.h', - 'command_buffer/service/gles2_cmd_decoder_autogen.h', - 'command_buffer/service/gles2_cmd_decoder.cc', - 'command_buffer/service/gles2_cmd_validation.h', - 'command_buffer/service/gles2_cmd_validation.cc', - 'command_buffer/service/gles2_cmd_validation_autogen.h', - 'command_buffer/service/gles2_cmd_validation_implementation_autogen.h', - 'command_buffer/service/gl_utils.h', - 'command_buffer/service/gpu_processor.h', - 'command_buffer/service/gpu_processor.cc', - 'command_buffer/service/gpu_processor_linux.cc', - 'command_buffer/service/gpu_processor_mac.cc', - 'command_buffer/service/gpu_processor_win.cc', - 'command_buffer/service/gpu_processor_mock.h', - 'command_buffer/service/id_manager.h', - 'command_buffer/service/id_manager.cc', - 'command_buffer/service/program_manager.h', - 'command_buffer/service/program_manager.cc', - 'command_buffer/service/renderbuffer_manager.h', - 'command_buffer/service/renderbuffer_manager.cc', - 'command_buffer/service/shader_manager.h', - 'command_buffer/service/shader_manager.cc', - 'command_buffer/service/texture_manager.h', - 'command_buffer/service/texture_manager.cc', - ], }, 'targets': [ { - 'target_name': 'gl_libs', - 'type': 'static_library', - 'include_dirs': [ - '../third_party/glew/include', - ], - 'defines': [ - 'GLEW_STATIC', - ], - 'all_dependent_settings': { - 'include_dirs': [ - '../third_party/glew/include', - ], - 'defines': [ - 'GLEW_STATIC', - ], - }, - 'sources': [ - '../third_party/glew/src/glew.c', - ], - 'conditions': [ - [ 'OS=="linux"', - { - 'all_dependent_settings': { - 'defines': [ - 'GL_GLEXT_PROTOTYPES', - ], - 'ldflags': [ - '-L<(PRODUCT_DIR)', - ], - 'link_settings': { - 'libraries': [ - '-lX11', - # For dlsym() in '../third_party/glew/src/glew.c' - '-ldl', - ], - }, - }, - }, - ], - [ 'OS=="mac"', - { - 'link_settings': { - 'libraries': [ - '$(SDKROOT)/System/Library/Frameworks/OpenGL.framework', - ], - }, - }, - ], - [ 'OS=="win"', - { - 'all_dependent_settings': { - 'link_settings': { - 'libraries': [ - '-lOpenGL32.lib', - ], - }, - }, - }, - ], - ], - }, - { 'target_name': 'command_buffer_common', 'type': 'static_library', 'include_dirs': [ @@ -218,7 +121,7 @@ ], }, { - 'target_name': 'command_buffer_service_impl', + 'target_name': 'command_buffer_service', 'type': 'static_library', 'include_dirs': [ '..', @@ -230,38 +133,48 @@ }, 'dependencies': [ 'command_buffer_common', - 'gl_libs', + '../app/app.gyp:app_base', '../gfx/gfx.gyp:gfx', ], 'sources': [ - 'command_buffer/service/common_decoder.cc', - 'command_buffer/service/common_decoder.h', + 'command_buffer/service/buffer_manager.h', + 'command_buffer/service/buffer_manager.cc', + 'command_buffer/service/framebuffer_manager.h', + 'command_buffer/service/framebuffer_manager.cc', 'command_buffer/service/cmd_buffer_engine.h', - 'command_buffer/service/command_buffer_service.cc', - 'command_buffer/service/command_buffer_service.h', 'command_buffer/service/cmd_parser.cc', 'command_buffer/service/cmd_parser.h', + 'command_buffer/service/command_buffer_service.cc', + 'command_buffer/service/command_buffer_service.h', + 'command_buffer/service/common_decoder.cc', + 'command_buffer/service/common_decoder.h', + 'command_buffer/service/context_group.h', + 'command_buffer/service/context_group.cc', + 'command_buffer/service/gles2_cmd_decoder.h', + 'command_buffer/service/gles2_cmd_decoder_autogen.h', + 'command_buffer/service/gles2_cmd_decoder.cc', + 'command_buffer/service/gles2_cmd_validation.h', + 'command_buffer/service/gles2_cmd_validation.cc', + 'command_buffer/service/gles2_cmd_validation_autogen.h', + 'command_buffer/service/gles2_cmd_validation_implementation_autogen.h', + 'command_buffer/service/gl_utils.h', + 'command_buffer/service/gpu_processor.h', + 'command_buffer/service/gpu_processor.cc', + 'command_buffer/service/gpu_processor_linux.cc', + 'command_buffer/service/gpu_processor_mac.cc', + 'command_buffer/service/gpu_processor_mock.h', + 'command_buffer/service/gpu_processor_win.cc', + 'command_buffer/service/id_manager.h', + 'command_buffer/service/id_manager.cc', 'command_buffer/service/mocks.h', - ], - }, - { - 'target_name': 'command_buffer_service', - 'type': 'static_library', - 'include_dirs': [ - '..', - ], - 'all_dependent_settings': { - 'include_dirs': [ - '..', - ], - }, - 'dependencies': [ - 'command_buffer_service_impl', - 'gl_libs', - '../app/app.gyp:app_base', - ], - 'sources': [ - '<@(gpu_service_source_files)', + 'command_buffer/service/program_manager.h', + 'command_buffer/service/program_manager.cc', + 'command_buffer/service/renderbuffer_manager.h', + 'command_buffer/service/renderbuffer_manager.cc', + 'command_buffer/service/shader_manager.h', + 'command_buffer/service/shader_manager.cc', + 'command_buffer/service/texture_manager.h', + 'command_buffer/service/texture_manager.cc', ], 'conditions': [ ['OS == "linux"', { @@ -305,18 +218,18 @@ 'target_name': 'gpu_unittests', 'type': 'executable', 'dependencies': [ + '../app/app.gyp:app_base', '../testing/gmock.gyp:gmock', '../testing/gmock.gyp:gmockmain', '../testing/gtest.gyp:gtest', 'command_buffer_client', 'command_buffer_common', - 'command_buffer_service_impl', + 'command_buffer_service', 'gles2_lib', 'gles2_implementation', 'gles2_cmd_helper', ], 'sources': [ - '<@(gpu_service_source_files)', 'command_buffer/client/cmd_buffer_helper_test.cc', 'command_buffer/client/fenced_allocator_test.cc', 'command_buffer/client/gles2_implementation_unittest.cc', @@ -335,6 +248,7 @@ 'command_buffer/common/gles2_cmd_id_test.cc', 'command_buffer/common/gles2_cmd_id_test_autogen.h', 'command_buffer/common/id_allocator_test.cc', + 'command_buffer/common/unittest_main.cc', 'command_buffer/service/buffer_manager_unittest.cc', 'command_buffer/service/context_group_unittest.cc', 'command_buffer/service/cmd_parser_test.cc', @@ -342,11 +256,6 @@ 'command_buffer/service/common_decoder_unittest.cc', 'command_buffer/service/framebuffer_manager_unittest.cc', 'command_buffer/service/gpu_processor_unittest.cc', - 'command_buffer/service/gl_context_stub.cc', - 'command_buffer/service/gl_interface.h', - 'command_buffer/service/gl_interface.cc', - 'command_buffer/service/gl_mock.h', - 'command_buffer/service/gl_mock.cc', 'command_buffer/service/gles2_cmd_decoder_unittest_base.h', 'command_buffer/service/gles2_cmd_decoder_unittest_base.cc', 'command_buffer/service/gles2_cmd_decoder_unittest.cc', -- cgit v1.1