1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // This file implements mock GL Interface for unit testing. It has to mock
6 // Desktop GL, not GLES2 as it is used to test the service side code.
8 #ifndef GPU_COMMAND_BUFFER_COMMON_GL_MOCK_H_
9 #define GPU_COMMAND_BUFFER_COMMON_GL_MOCK_H_
12 #include "testing/gmock/include/gmock/gmock.h"
13 #include "ui/gfx/gl/gl_interface.h"
17 class MockGLInterface
: public GLInterface
{
20 virtual ~MockGLInterface();
22 MOCK_METHOD1(ActiveTexture
, void(GLenum texture
));
24 MOCK_METHOD2(AttachShader
, void(GLuint program
, GLuint shader
));
26 MOCK_METHOD3(BindAttribLocation
, void(
27 GLuint program
, GLuint index
, const char* name
));
29 MOCK_METHOD2(BindBuffer
, void(GLenum target
, GLuint buffer
));
31 MOCK_METHOD4(BindFragDataLocationIndexedARB
, void(GLuint program
,
32 GLuint colorNumber
, GLuint index
, const char* name
));
34 MOCK_METHOD2(BindFramebufferEXT
, void(GLenum target
, GLuint framebuffer
));
36 MOCK_METHOD2(BindRenderbufferEXT
, void(GLenum target
, GLuint renderbuffer
));
38 MOCK_METHOD2(BindTexture
, void(GLenum target
, GLuint texture
));
40 MOCK_METHOD4(BlendColor
, void(
41 GLclampf red
, GLclampf green
, GLclampf blue
, GLclampf alpha
));
43 MOCK_METHOD1(BlendEquation
, void(GLenum mode
));
45 MOCK_METHOD2(BlendEquationSeparate
, void(GLenum modeRGB
, GLenum modeAlpha
));
47 MOCK_METHOD2(BlendFunc
, void(GLenum sfactor
, GLenum dfactor
));
49 MOCK_METHOD4(BlendFuncSeparate
, void(
50 GLenum srcRGB
, GLenum dstRGB
, GLenum srcAlpha
, GLenum dstAlpha
));
52 MOCK_METHOD10(BlitFramebufferANGLE
, void(
53 GLint srcX0
, GLint srcY0
, GLint srcX1
, GLint srcY1
,
54 GLint dstX0
, GLint dstY0
, GLint dstX1
, GLint dstY1
,
55 GLbitfield mask
, GLenum filter
));
57 MOCK_METHOD10(BlitFramebufferEXT
, void(
58 GLint srcX0
, GLint srcY0
, GLint srcX1
, GLint srcY1
,
59 GLint dstX0
, GLint dstY0
, GLint dstX1
, GLint dstY1
,
60 GLbitfield mask
, GLenum filter
));
62 MOCK_METHOD4(BufferData
, void(
63 GLenum target
, GLsizeiptr size
, const void* data
, GLenum usage
));
65 MOCK_METHOD4(BufferSubData
, void(
66 GLenum target
, GLintptr offset
, GLsizeiptr size
, const void* data
));
68 MOCK_METHOD1(CheckFramebufferStatusEXT
, GLenum(GLenum target
));
70 MOCK_METHOD1(Clear
, void(GLbitfield mask
));
72 MOCK_METHOD4(ClearColor
, void(
73 GLclampf red
, GLclampf green
, GLclampf blue
, GLclampf alpha
));
75 MOCK_METHOD1(ClearDepth
, void(GLclampd depth
));
77 MOCK_METHOD1(ClearDepthf
, void(GLclampf depth
));
79 MOCK_METHOD1(ClearStencil
, void(GLint s
));
81 MOCK_METHOD4(ColorMask
, void(
82 GLboolean red
, GLboolean green
, GLboolean blue
, GLboolean alpha
));
84 MOCK_METHOD1(CompileShader
, void(GLuint shader
));
86 MOCK_METHOD8(CompressedTexImage2D
, void(
87 GLenum target
, GLint level
, GLenum internalformat
, GLsizei width
,
88 GLsizei height
, GLint border
, GLsizei imageSize
, const void* data
));
90 MOCK_METHOD9(CompressedTexSubImage2D
, void(
91 GLenum target
, GLint level
, GLint xoffset
, GLint yoffset
, GLsizei width
,
92 GLsizei height
, GLenum format
, GLsizei imageSize
, const void* data
));
94 MOCK_METHOD8(CopyTexImage2D
, void(
95 GLenum target
, GLint level
, GLenum internalformat
, GLint x
, GLint y
,
96 GLsizei width
, GLsizei height
, GLint border
));
98 MOCK_METHOD8(CopyTexSubImage2D
, void(
99 GLenum target
, GLint level
, GLint xoffset
, GLint yoffset
,
100 GLint x
, GLint y
, GLsizei width
, GLsizei height
));
102 MOCK_METHOD0(CreateProgram
, GLuint());
104 MOCK_METHOD1(CreateShader
, GLuint(GLenum type
));
106 MOCK_METHOD1(CullFace
, void(GLenum mode
));
108 MOCK_METHOD2(DeleteBuffersARB
, void(GLsizei n
, const GLuint
* buffers
));
110 MOCK_METHOD2(DeleteFramebuffersEXT
,
111 void(GLsizei n
, const GLuint
* framebuffers
));
113 MOCK_METHOD1(DeleteProgram
, void(GLuint program
));
115 MOCK_METHOD2(DeleteRenderbuffersEXT
, void(
116 GLsizei n
, const GLuint
* renderbuffers
));
118 MOCK_METHOD1(DeleteShader
, void(GLuint shader
));
120 MOCK_METHOD2(DeleteTextures
, void(GLsizei n
, const GLuint
* textures
));
122 MOCK_METHOD1(DepthFunc
, void(GLenum func
));
124 MOCK_METHOD1(DepthMask
, void(GLboolean flag
));
126 MOCK_METHOD2(DepthRange
, void(GLclampd zNear
, GLclampd zFar
));
128 MOCK_METHOD2(DepthRangef
, void(GLclampf zNear
, GLclampf zFar
));
130 MOCK_METHOD2(DetachShader
, void(GLuint program
, GLuint shader
));
132 MOCK_METHOD1(Disable
, void(GLenum cap
));
134 MOCK_METHOD1(DisableVertexAttribArray
, void(GLuint index
));
136 MOCK_METHOD3(DrawArrays
, void(GLenum mode
, GLint first
, GLsizei count
));
138 MOCK_METHOD1(DrawBuffer
, void(GLenum mode
));
140 MOCK_METHOD2(DrawBuffersARB
, void(GLsizei n
, const GLenum
* bufs
));
142 MOCK_METHOD4(DrawElements
, void(
143 GLenum mode
, GLsizei count
, GLenum type
, const void* indices
));
145 MOCK_METHOD2(EGLImageTargetTexture2DOES
, void(
146 GLenum target
, GLeglImageOES image
));
148 MOCK_METHOD1(Enable
, void(GLenum cap
));
150 MOCK_METHOD1(EnableVertexAttribArray
, void(GLuint index
));
152 MOCK_METHOD0(Finish
, void());
154 MOCK_METHOD0(Flush
, void());
156 MOCK_METHOD4(FramebufferRenderbufferEXT
, void(
157 GLenum target
, GLenum attachment
, GLenum renderbuffertarget
,
158 GLuint renderbuffer
));
160 MOCK_METHOD5(FramebufferTexture2DEXT
, void(
161 GLenum target
, GLenum attachment
, GLenum textarget
, GLuint texture
,
164 MOCK_METHOD1(FrontFace
, void(GLenum mode
));
166 MOCK_METHOD2(GenBuffersARB
, void(GLsizei n
, GLuint
* buffers
));
168 MOCK_METHOD1(GenerateMipmapEXT
, void(GLenum target
));
170 MOCK_METHOD2(GenFramebuffersEXT
, void(GLsizei n
, GLuint
* framebuffers
));
172 MOCK_METHOD2(GenRenderbuffersEXT
, void(GLsizei n
, GLuint
* renderbuffers
));
174 MOCK_METHOD2(GenTextures
, void(GLsizei n
, GLuint
* textures
));
176 MOCK_METHOD7(GetActiveAttrib
, void(
177 GLuint program
, GLuint index
, GLsizei bufsize
, GLsizei
* length
,
178 GLint
* size
, GLenum
* type
, char* name
));
180 MOCK_METHOD7(GetActiveUniform
, void(
181 GLuint program
, GLuint index
, GLsizei bufsize
, GLsizei
* length
,
182 GLint
* size
, GLenum
* type
, char* name
));
184 MOCK_METHOD4(GetAttachedShaders
, void(
185 GLuint program
, GLsizei maxcount
, GLsizei
* count
, GLuint
* shaders
));
187 MOCK_METHOD2(GetAttribLocation
, GLint(GLuint program
, const char* name
));
189 MOCK_METHOD2(GetBooleanv
, void(GLenum pname
, GLboolean
* params
));
191 MOCK_METHOD3(GetBufferParameteriv
, void(
192 GLenum target
, GLenum pname
, GLint
* params
));
194 MOCK_METHOD0(GetError
, GLenum());
196 MOCK_METHOD2(GetFloatv
, void(GLenum pname
, GLfloat
* params
));
198 MOCK_METHOD4(GetFramebufferAttachmentParameterivEXT
, void(
199 GLenum target
, GLenum attachment
, GLenum pname
, GLint
* params
));
201 MOCK_METHOD2(GetIntegerv
, void(GLenum pname
, GLint
* params
));
203 MOCK_METHOD3(GetProgramiv
, void(GLuint program
, GLenum pname
, GLint
* params
));
205 MOCK_METHOD4(GetProgramInfoLog
, void(
206 GLuint program
, GLsizei bufsize
, GLsizei
* length
, char* infolog
));
208 MOCK_METHOD3(GetRenderbufferParameterivEXT
, void(
209 GLenum target
, GLenum pname
, GLint
* params
));
211 MOCK_METHOD3(GetShaderiv
, void(GLuint shader
, GLenum pname
, GLint
* params
));
213 MOCK_METHOD4(GetShaderInfoLog
, void(
214 GLuint shader
, GLsizei bufsize
, GLsizei
* length
, char* infolog
));
216 MOCK_METHOD4(GetShaderPrecisionFormat
, void(
217 GLenum shadertype
, GLenum precisiontype
, GLint
* range
, GLint
* precision
));
219 MOCK_METHOD4(GetShaderSource
, void(
220 GLuint shader
, GLsizei bufsize
, GLsizei
* length
, char* source
));
222 MOCK_METHOD1(GetString
, const GLubyte
*(GLenum name
));
224 MOCK_METHOD4(GetTexLevelParameterfv
, void(
225 GLenum target
, GLint level
, GLenum pname
, GLfloat
* params
));
227 MOCK_METHOD4(GetTexLevelParameteriv
, void(
228 GLenum target
, GLint level
, GLenum pname
, GLint
* params
));
230 MOCK_METHOD3(GetTexParameterfv
, void(
231 GLenum target
, GLenum pname
, GLfloat
* params
));
233 MOCK_METHOD3(GetTexParameteriv
, void(
234 GLenum target
, GLenum pname
, GLint
* params
));
236 MOCK_METHOD3(GetUniformfv
,
237 void(GLuint program
, GLint location
, GLfloat
* params
));
239 MOCK_METHOD3(GetUniformiv
,
240 void(GLuint program
, GLint location
, GLint
* params
));
242 MOCK_METHOD2(GetUniformLocation
, GLint(GLuint program
, const char* name
));
244 MOCK_METHOD3(GetVertexAttribfv
, void(
245 GLuint index
, GLenum pname
, GLfloat
* params
));
247 MOCK_METHOD3(GetVertexAttribiv
,
248 void(GLuint index
, GLenum pname
, GLint
* params
));
250 MOCK_METHOD3(GetVertexAttribPointerv
, void(
251 GLuint index
, GLenum pname
, void** pointer
));
253 MOCK_METHOD2(Hint
, void(GLenum target
, GLenum mode
));
255 MOCK_METHOD1(IsBuffer
, GLboolean(GLuint buffer
));
257 MOCK_METHOD1(IsEnabled
, GLboolean(GLenum cap
));
259 MOCK_METHOD1(IsFramebufferEXT
, GLboolean(GLuint framebuffer
));
261 MOCK_METHOD1(IsProgram
, GLboolean(GLuint program
));
263 MOCK_METHOD1(IsRenderbufferEXT
, GLboolean(GLuint renderbuffer
));
265 MOCK_METHOD1(IsShader
, GLboolean(GLuint shader
));
267 MOCK_METHOD1(IsTexture
, GLboolean(GLuint texture
));
269 MOCK_METHOD1(LineWidth
, void(GLfloat width
));
271 MOCK_METHOD1(LinkProgram
, void(GLuint program
));
273 MOCK_METHOD2(MapBuffer
, void*(GLenum target
, GLenum access
));
275 MOCK_METHOD2(PixelStorei
, void(GLenum pname
, GLint param
));
277 MOCK_METHOD2(PolygonOffset
, void(GLfloat factor
, GLfloat units
));
279 MOCK_METHOD1(ReadBuffer
, void(GLenum src
));
281 MOCK_METHOD7(ReadPixels
, void(
282 GLint x
, GLint y
, GLsizei width
, GLsizei height
, GLenum format
,
283 GLenum type
, void* pixels
));
285 MOCK_METHOD0(ReleaseShaderCompiler
, void());
287 MOCK_METHOD4(RenderbufferStorageEXT
, void(
288 GLenum target
, GLenum internalformat
, GLsizei width
, GLsizei height
));
290 MOCK_METHOD5(RenderbufferStorageMultisampleANGLE
, void(
291 GLenum target
, GLsizei samples
, GLenum internalformat
,
292 GLsizei width
, GLsizei height
));
294 MOCK_METHOD5(RenderbufferStorageMultisampleEXT
, void(
295 GLenum target
, GLsizei samples
, GLenum internalformat
,
296 GLsizei width
, GLsizei height
));
298 MOCK_METHOD2(SampleCoverage
, void(GLclampf value
, GLboolean invert
));
300 MOCK_METHOD4(Scissor
, void(GLint x
, GLint y
, GLsizei width
, GLsizei height
));
302 MOCK_METHOD5(ShaderBinary
, void(
303 GLsizei n
, const GLuint
* shaders
, GLenum binaryformat
,
304 const void* binary
, GLsizei length
));
306 MOCK_METHOD4(ShaderSource
, void(
307 GLuint shader
, GLsizei count
, const char** str
, const GLint
* length
));
309 MOCK_METHOD3(StencilFunc
, void(GLenum func
, GLint ref
, GLuint mask
));
311 MOCK_METHOD4(StencilFuncSeparate
, void(
312 GLenum face
, GLenum func
, GLint ref
, GLuint mask
));
314 MOCK_METHOD1(StencilMask
, void(GLuint mask
));
316 MOCK_METHOD2(StencilMaskSeparate
, void(GLenum face
, GLuint mask
));
318 MOCK_METHOD3(StencilOp
, void(GLenum fail
, GLenum zfail
, GLenum zpass
));
320 MOCK_METHOD4(StencilOpSeparate
, void(
321 GLenum face
, GLenum fail
, GLenum zfail
, GLenum zpass
));
323 MOCK_METHOD9(TexImage2D
, void(
324 GLenum target
, GLint level
, GLint internalformat
, GLsizei width
,
325 GLsizei height
, GLint border
, GLenum format
, GLenum type
,
326 const void* pixels
));
328 MOCK_METHOD3(TexParameterf
, void(GLenum target
, GLenum pname
, GLfloat param
));
330 MOCK_METHOD3(TexParameterfv
, void(
331 GLenum target
, GLenum pname
, const GLfloat
* params
));
333 MOCK_METHOD3(TexParameteri
, void(GLenum target
, GLenum pname
, GLint param
));
335 MOCK_METHOD3(TexParameteriv
, void(
336 GLenum target
, GLenum pname
, const GLint
* params
));
338 MOCK_METHOD9(TexSubImage2D
, void(
339 GLenum target
, GLint level
, GLint xoffset
, GLint yoffset
, GLsizei width
,
340 GLsizei height
, GLenum format
, GLenum type
, const void* pixels
));
342 MOCK_METHOD2(Uniform1f
, void(GLint location
, GLfloat x
));
344 MOCK_METHOD3(Uniform1fv
,
345 void(GLint location
, GLsizei count
, const GLfloat
* v
));
347 MOCK_METHOD2(Uniform1i
, void(GLint location
, GLint x
));
349 MOCK_METHOD3(Uniform1iv
, void(GLint location
, GLsizei count
, const GLint
* v
));
351 MOCK_METHOD3(Uniform2f
, void(GLint location
, GLfloat x
, GLfloat y
));
353 MOCK_METHOD3(Uniform2fv
,
354 void(GLint location
, GLsizei count
, const GLfloat
* v
));
356 MOCK_METHOD3(Uniform2i
, void(GLint location
, GLint x
, GLint y
));
358 MOCK_METHOD3(Uniform2iv
, void(GLint location
, GLsizei count
, const GLint
* v
));
360 MOCK_METHOD4(Uniform3f
,
361 void(GLint location
, GLfloat x
, GLfloat y
, GLfloat z
));
363 MOCK_METHOD3(Uniform3fv
,
364 void(GLint location
, GLsizei count
, const GLfloat
* v
));
366 MOCK_METHOD4(Uniform3i
, void(GLint location
, GLint x
, GLint y
, GLint z
));
368 MOCK_METHOD3(Uniform3iv
, void(GLint location
, GLsizei count
, const GLint
* v
));
370 MOCK_METHOD5(Uniform4f
, void(
371 GLint location
, GLfloat x
, GLfloat y
, GLfloat z
, GLfloat w
));
373 MOCK_METHOD3(Uniform4fv
,
374 void(GLint location
, GLsizei count
, const GLfloat
* v
));
376 MOCK_METHOD5(Uniform4i
,
377 void(GLint location
, GLint x
, GLint y
, GLint z
, GLint w
));
379 MOCK_METHOD3(Uniform4iv
, void(GLint location
, GLsizei count
, const GLint
* v
));
381 MOCK_METHOD4(UniformMatrix2fv
, void(
382 GLint location
, GLsizei count
, GLboolean transpose
,
383 const GLfloat
* value
));
385 MOCK_METHOD4(UniformMatrix3fv
, void(
386 GLint location
, GLsizei count
, GLboolean transpose
,
387 const GLfloat
* value
));
389 MOCK_METHOD4(UniformMatrix4fv
, void(
390 GLint location
, GLsizei count
, GLboolean transpose
,
391 const GLfloat
* value
));
393 MOCK_METHOD1(UnmapBuffer
, GLboolean(GLenum target
));
395 MOCK_METHOD1(UseProgram
, void(GLuint program
));
397 MOCK_METHOD1(ValidateProgram
, void(GLuint program
));
399 MOCK_METHOD2(VertexAttrib1f
, void(GLuint indx
, GLfloat x
));
401 MOCK_METHOD2(VertexAttrib1fv
, void(GLuint indx
, const GLfloat
* values
));
403 MOCK_METHOD3(VertexAttrib2f
, void(GLuint indx
, GLfloat x
, GLfloat y
));
405 MOCK_METHOD2(VertexAttrib2fv
, void(GLuint indx
, const GLfloat
* values
));
407 MOCK_METHOD4(VertexAttrib3f
,
408 void(GLuint indx
, GLfloat x
, GLfloat y
, GLfloat z
));
410 MOCK_METHOD2(VertexAttrib3fv
, void(GLuint indx
, const GLfloat
* values
));
412 MOCK_METHOD5(VertexAttrib4f
, void(
413 GLuint indx
, GLfloat x
, GLfloat y
, GLfloat z
, GLfloat w
));
415 MOCK_METHOD2(VertexAttrib4fv
, void(GLuint indx
, const GLfloat
* values
));
417 MOCK_METHOD6(VertexAttribPointer
, void(
418 GLuint indx
, GLint size
, GLenum type
, GLboolean normalized
,
419 GLsizei stride
, const void* ptr
));
421 MOCK_METHOD4(Viewport
, void(GLint x
, GLint y
, GLsizei width
, GLsizei height
));
423 MOCK_METHOD0(SwapBuffers
, void());
425 MOCK_METHOD4(GetMaxValueInBufferCHROMIUM
, GLuint(
426 GLuint buffer_id
, GLsizei count
, GLenum type
, GLuint offset
));
428 MOCK_METHOD2(GenFencesNV
, void(GLsizei n
, GLuint
*fences
));
430 MOCK_METHOD2(DeleteFencesNV
, void(GLsizei n
, const GLuint
*fences
));
432 MOCK_METHOD2(SetFenceNV
, void(GLuint fence
, GLenum condition
));
434 MOCK_METHOD1(TestFenceNV
, GLboolean(GLuint fence
));
436 MOCK_METHOD1(FinishFenceNV
, void(GLuint fence
));
438 MOCK_METHOD1(IsFenceNV
, GLboolean(GLuint fence
));
440 MOCK_METHOD3(GetFenceivNV
, void(GLuint fence
, GLenum pname
, GLint
*params
));
442 MOCK_METHOD1(SetSurfaceCHROMIUM
, void(GLuint
));
444 MOCK_METHOD0(GetGraphicsResetStatusARB
, GLenum());
449 #endif // GPU_COMMAND_BUFFER_COMMON_GL_MOCK_H_