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   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 
    128