Home | History | Annotate | Download | only in service
      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       const char* gl_version,
     70       bool bind_generates_resource);
     71   static void SetupFeatureInfoInitExpectations(
     72       ::gfx::MockGLInterface* gl, const char* extensions);
     73   static void SetupFeatureInfoInitExpectationsWithGLVersion(
     74       ::gfx::MockGLInterface* gl,
     75       const char* extensions,
     76       const char* gl_renderer,
     77       const char* gl_version);
     78   static void SetupTextureManagerInitExpectations(::gfx::MockGLInterface* gl,
     79                                                   const char* extensions,
     80                                                   bool use_default_textures);
     81   static void SetupTextureManagerDestructionExpectations(
     82       ::gfx::MockGLInterface* gl,
     83       const char* extensions,
     84       bool use_default_textures);
     85 
     86   static void SetupExpectationsForClearingUniforms(
     87       ::gfx::MockGLInterface* gl, UniformInfo* uniforms, size_t num_uniforms);
     88 
     89   static void SetupShader(
     90       ::gfx::MockGLInterface* gl,
     91       AttribInfo* attribs, size_t num_attribs,
     92       UniformInfo* uniforms, size_t num_uniforms,
     93       GLuint service_id);
     94 
     95   static void SetupProgramSuccessExpectations(::gfx::MockGLInterface* gl,
     96       AttribInfo* attribs, size_t num_attribs,
     97       UniformInfo* uniforms, size_t num_uniforms,
     98       GLuint service_id);
     99 
    100   static void DoBufferData(
    101       ::gfx::MockGLInterface* gl, MockErrorState* error_state,
    102       BufferManager* manager, Buffer* buffer, GLsizeiptr size, GLenum usage,
    103       const GLvoid* data, GLenum error);
    104 
    105   static void SetTexParameteriWithExpectations(
    106       ::gfx::MockGLInterface* gl, MockErrorState* error_state,
    107       TextureManager* manager, TextureRef* texture_ref,
    108       GLenum pname, GLint value, GLenum error);
    109 
    110  private:
    111   static void SetupTextureInitializationExpectations(::gfx::MockGLInterface* gl,
    112                                                      GLenum target,
    113                                                      bool use_default_textures);
    114   static void SetupTextureDestructionExpectations(::gfx::MockGLInterface* gl,
    115                                                   GLenum target,
    116                                                   bool use_default_textures);
    117 };
    118 
    119 // This object temporaritly Sets what gfx::GetGLImplementation returns. During
    120 // testing the GLImplementation is set to kGLImplemenationMockGL but lots of
    121 // code branches based on what gfx::GetGLImplementation returns.
    122 class ScopedGLImplementationSetter {
    123  public:
    124   explicit ScopedGLImplementationSetter(gfx::GLImplementation implementation);
    125   ~ScopedGLImplementationSetter();
    126 
    127  private:
    128   gfx::GLImplementation old_implementation_;
    129 };
    130 
    131 }  // namespace gles2
    132 }  // namespace gpu
    133 
    134 #endif  // GPU_COMMAND_BUFFER_SERVICE_TEST_HELPER_H_
    135 
    136