- add sources.
[platform/framework/web/crosswalk.git] / src / gpu / command_buffer / service / test_helper.h
1 // Copyright (c) 2012 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.
4
5 #ifndef GPU_COMMAND_BUFFER_SERVICE_TEST_HELPER_H_
6 #define GPU_COMMAND_BUFFER_SERVICE_TEST_HELPER_H_
7
8 #include "ui/gl/gl_implementation.h"
9 #include "ui/gl/gl_mock.h"
10
11 namespace gpu {
12 namespace gles2 {
13
14 struct DisallowedFeatures;
15 class Buffer;
16 class BufferManager;
17 class MockErrorState;
18 class TextureRef;
19 class TextureManager;
20
21 class TestHelper {
22  public:
23   static const GLuint kServiceBlackTexture2dId = 701;
24   static const GLuint kServiceDefaultTexture2dId = 702;
25   static const GLuint kServiceBlackTextureCubemapId = 703;
26   static const GLuint kServiceDefaultTextureCubemapId = 704;
27   static const GLuint kServiceBlackExternalTextureId = 705;
28   static const GLuint kServiceDefaultExternalTextureId = 706;
29   static const GLuint kServiceBlackRectangleTextureId = 707;
30   static const GLuint kServiceDefaultRectangleTextureId = 708;
31
32   static const GLint kMaxSamples = 4;
33   static const GLint kMaxRenderbufferSize = 1024;
34   static const GLint kMaxTextureSize = 2048;
35   static const GLint kMaxCubeMapTextureSize = 256;
36   static const GLint kNumVertexAttribs = 16;
37   static const GLint kNumTextureUnits = 8;
38   static const GLint kMaxTextureImageUnits = 8;
39   static const GLint kMaxVertexTextureImageUnits = 2;
40   static const GLint kMaxFragmentUniformVectors = 16;
41   static const GLint kMaxFragmentUniformComponents =
42       kMaxFragmentUniformVectors * 4;
43   static const GLint kMaxVaryingVectors = 8;
44   static const GLint kMaxVaryingFloats = kMaxVaryingVectors * 4;
45   static const GLint kMaxVertexUniformVectors = 128;
46   static const GLint kMaxVertexUniformComponents = kMaxVertexUniformVectors * 4;
47
48   struct AttribInfo {
49     const char* name;
50     GLint size;
51     GLenum type;
52     GLint location;
53   };
54
55   struct UniformInfo {
56     const char* name;
57     GLint size;
58     GLenum type;
59     GLint fake_location;
60     GLint real_location;
61     GLint desired_location;
62     const char* good_name;
63   };
64
65   static void SetupContextGroupInitExpectations(
66       ::gfx::MockGLInterface* gl,
67       const DisallowedFeatures& disallowed_features,
68       const char* extensions);
69   static void SetupFeatureInfoInitExpectations(
70       ::gfx::MockGLInterface* gl, const char* extensions);
71   static void SetupFeatureInfoInitExpectationsWithGLVersion(
72       ::gfx::MockGLInterface* gl,
73       const char* extensions,
74       const char* version);
75   static void SetupTextureManagerInitExpectations(
76       ::gfx::MockGLInterface* gl, const char* extensions);
77   static void SetupTextureManagerDestructionExpectations(
78       ::gfx::MockGLInterface* gl, const char* extensions);
79
80   static void SetupExpectationsForClearingUniforms(
81       ::gfx::MockGLInterface* gl, UniformInfo* uniforms, size_t num_uniforms);
82
83   static void SetupShader(
84       ::gfx::MockGLInterface* gl,
85       AttribInfo* attribs, size_t num_attribs,
86       UniformInfo* uniforms, size_t num_uniforms,
87       GLuint service_id);
88
89   static void SetupProgramSuccessExpectations(::gfx::MockGLInterface* gl,
90       AttribInfo* attribs, size_t num_attribs,
91       UniformInfo* uniforms, size_t num_uniforms,
92       GLuint service_id);
93
94   static void DoBufferData(
95       ::gfx::MockGLInterface* gl, MockErrorState* error_state,
96       BufferManager* manager, Buffer* buffer, GLsizeiptr size, GLenum usage,
97       const GLvoid* data, GLenum error);
98
99   static void SetTexParameterWithExpectations(
100       ::gfx::MockGLInterface* gl, MockErrorState* error_state,
101       TextureManager* manager, TextureRef* texture_ref,
102       GLenum pname, GLint value, GLenum error);
103
104  private:
105   static void SetupTextureInitializationExpectations(
106        ::gfx::MockGLInterface* gl, GLenum target);
107   static void SetupTextureDestructionExpectations(
108        ::gfx::MockGLInterface* gl, GLenum target);
109 };
110
111 // This object temporaritly Sets what gfx::GetGLImplementation returns. During
112 // testing the GLImplementation is set to kGLImplemenationMockGL but lots of
113 // code branches based on what gfx::GetGLImplementation returns.
114 class ScopedGLImplementationSetter {
115  public:
116   explicit ScopedGLImplementationSetter(gfx::GLImplementation implementation);
117   ~ScopedGLImplementationSetter();
118
119  private:
120   gfx::GLImplementation old_implementation_;
121 };
122
123 }  // namespace gles2
124 }  // namespace gpu
125
126 #endif  // GPU_COMMAND_BUFFER_SERVICE_TEST_HELPER_H_
127