| Index: gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
|
| ===================================================================
|
| --- gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc (revision 132190)
|
| +++ gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc (working copy)
|
| @@ -26,6 +26,7 @@
|
| using ::testing::Pointee;
|
| using ::testing::Return;
|
| using ::testing::SetArrayArgument;
|
| +using ::testing::SetArgPointee;
|
| using ::testing::SetArgumentPointee;
|
| using ::testing::StrEq;
|
| using ::testing::StrictMock;
|
| @@ -63,6 +64,125 @@
|
| true); // bind generates resource
|
| }
|
|
|
| +// Setup the expectations required for the inialiazation of the resources
|
| +// used by the GL_CHROMIUM_copy_texture extension.
|
| +void GLES2DecoderTestBase::AddExpectationsForCopyTextureCHROMIUM() {
|
| + static GLuint copy_texture_chromium_buffer_ids[] = {
|
| + kServiceCopyTextureChromiumVertexBufferId,
|
| + kServiceCopyTextureChromiumTextureBufferId
|
| + };
|
| + EXPECT_CALL(*gl_, GenBuffersARB(arraysize(copy_texture_chromium_buffer_ids),
|
| + _))
|
| + .WillOnce(SetArrayArgument<1>(copy_texture_chromium_buffer_ids,
|
| + copy_texture_chromium_buffer_ids + arraysize(
|
| + copy_texture_chromium_buffer_ids)))
|
| + .RetiresOnSaturation();
|
| +
|
| + EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER,
|
| + kServiceCopyTextureChromiumVertexBufferId))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +
|
| + EXPECT_CALL(*gl_, BufferData(GL_ARRAY_BUFFER, 16 * sizeof(GLfloat), _,
|
| + GL_STATIC_DRAW))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +
|
| + EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER,
|
| + kServiceCopyTextureChromiumTextureBufferId))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +
|
| + EXPECT_CALL(*gl_, BufferData(GL_ARRAY_BUFFER, 8 * sizeof(GLfloat), _,
|
| + GL_STATIC_DRAW))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +
|
| + static GLuint copy_texture_chromium_fbo_ids[] = {
|
| + kServiceCopyTextureChromiumFBOId
|
| + };
|
| + EXPECT_CALL(*gl_, GenFramebuffersEXT(arraysize(copy_texture_chromium_fbo_ids),
|
| + _))
|
| + .WillOnce(SetArrayArgument<1>(copy_texture_chromium_fbo_ids,
|
| + copy_texture_chromium_fbo_ids + arraysize(
|
| + copy_texture_chromium_fbo_ids)))
|
| + .RetiresOnSaturation();
|
| +
|
| + for (int shader = 0; shader < 5; ++shader) {
|
| + EXPECT_CALL(*gl_, CreateShader(
|
| + shader == 0 ? GL_VERTEX_SHADER : GL_FRAGMENT_SHADER))
|
| + .WillOnce(Return(kServiceCopyTextureChromiumShaderId + shader))
|
| + .RetiresOnSaturation();
|
| +
|
| + EXPECT_CALL(*gl_, ShaderSource(kServiceCopyTextureChromiumShaderId + shader,
|
| + 1, _, 0))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +
|
| + EXPECT_CALL(*gl_, CompileShader(
|
| + kServiceCopyTextureChromiumShaderId + shader))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +#ifndef NDEBUG
|
| + EXPECT_CALL(*gl_, GetShaderiv(kServiceCopyTextureChromiumShaderId + shader,
|
| + GL_COMPILE_STATUS, _))
|
| + .WillOnce(SetArgPointee<2>(GL_TRUE))
|
| + .RetiresOnSaturation();
|
| +#endif
|
| + }
|
| +
|
| + for (int program = 0; program < 4; ++program) {
|
| + EXPECT_CALL(*gl_, CreateProgram())
|
| + .WillOnce(Return(kServiceCopyTextureChromiumProgramId + program))
|
| + .RetiresOnSaturation();
|
| +
|
| + EXPECT_CALL(*gl_, AttachShader(
|
| + kServiceCopyTextureChromiumProgramId + program,
|
| + kServiceCopyTextureChromiumShaderId))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +
|
| + EXPECT_CALL(*gl_, AttachShader(
|
| + kServiceCopyTextureChromiumProgramId + program,
|
| + kServiceCopyTextureChromiumShaderId + program + 1))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +
|
| + EXPECT_CALL(*gl_, BindAttribLocation(
|
| + kServiceCopyTextureChromiumProgramId + program, 0, _))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +
|
| + EXPECT_CALL(*gl_, BindAttribLocation(
|
| + kServiceCopyTextureChromiumProgramId + program, 1, _))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +
|
| + EXPECT_CALL(*gl_, LinkProgram(
|
| + kServiceCopyTextureChromiumProgramId + program))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +
|
| +#ifndef NDEBUG
|
| + EXPECT_CALL(*gl_, GetProgramiv(
|
| + kServiceCopyTextureChromiumProgramId + program, GL_LINK_STATUS, _))
|
| + .WillOnce(SetArgPointee<2>(true))
|
| + .RetiresOnSaturation();
|
| +#endif
|
| +
|
| + EXPECT_CALL(*gl_, GetUniformLocation(
|
| + kServiceCopyTextureChromiumProgramId + program, _))
|
| + .WillOnce(Return(kServiceCopyTextureChromiumSamplerLocation))
|
| + .RetiresOnSaturation();
|
| + }
|
| +
|
| + for (int shader = 0; shader < 5; ++shader)
|
| + EXPECT_CALL(*gl_,
|
| + DeleteShader(kServiceCopyTextureChromiumShaderId + shader))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +}
|
| +
|
| void GLES2DecoderTestBase::InitDecoder(
|
| const char* extensions,
|
| bool has_alpha,
|
| @@ -83,6 +203,8 @@
|
|
|
| EXPECT_TRUE(group_->Initialize(DisallowedFeatures(), NULL));
|
|
|
| + AddExpectationsForCopyTextureCHROMIUM();
|
| +
|
| EXPECT_CALL(*gl_, EnableVertexAttribArray(0))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
| @@ -171,6 +293,26 @@
|
| .RetiresOnSaturation();
|
| #endif
|
|
|
| + static GLint viewport_dims[] = {
|
| + kViewportX,
|
| + kViewportY,
|
| + kViewportWidth,
|
| + kViewportHeight,
|
| + };
|
| + EXPECT_CALL(*gl_, GetIntegerv(GL_VIEWPORT, _))
|
| + .WillOnce(SetArrayArgument<1>(viewport_dims,
|
| + viewport_dims + arraysize(viewport_dims)))
|
| + .RetiresOnSaturation();
|
| +
|
| + static GLint max_viewport_dims[] = {
|
| + kMaxViewportWidth,
|
| + kMaxViewportHeight
|
| + };
|
| + EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_VIEWPORT_DIMS, _))
|
| + .WillOnce(SetArrayArgument<1>(
|
| + max_viewport_dims, max_viewport_dims + arraysize(max_viewport_dims)))
|
| + .RetiresOnSaturation();
|
| +
|
| engine_.reset(new StrictMock<MockCommandBufferEngine>());
|
| Buffer buffer = engine_->GetSharedMemoryBuffer(kSharedMemoryId);
|
| shared_memory_offset_ = kSharedMemoryOffset;
|
| @@ -231,11 +373,27 @@
|
| }
|
|
|
| void GLES2DecoderTestBase::TearDown() {
|
| + InSequence sequence;
|
| +
|
| // All Tests should have read all their GLErrors before getting here.
|
| EXPECT_EQ(GL_NO_ERROR, GetGLError());
|
| + EXPECT_CALL(*gl_, DeleteFramebuffersEXT(1,
|
| + Pointee(kServiceCopyTextureChromiumFBOId)))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +
|
| + EXPECT_CALL(*gl_, DeleteProgram(_))
|
| + .Times(4)
|
| + .RetiresOnSaturation();
|
| +
|
| + EXPECT_CALL(*gl_, DeleteBuffersARB(2, _))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| +
|
| EXPECT_CALL(*gl_, DeleteBuffersARB(1, _))
|
| .Times(2)
|
| .RetiresOnSaturation();
|
| +
|
| decoder_->Destroy();
|
| decoder_.reset();
|
| group_->Destroy(false);
|
| @@ -505,7 +663,9 @@
|
| bool depth_enabled,
|
| GLuint front_stencil_mask,
|
| GLuint back_stencil_mask,
|
| - bool stencil_enabled) {
|
| + bool stencil_enabled,
|
| + bool cull_face_enabled,
|
| + bool scissor_test_enabled) {
|
| EXPECT_CALL(*gl_, ColorMask(
|
| (color_bits & 0x1000) != 0,
|
| (color_bits & 0x0100) != 0,
|
| @@ -540,6 +700,24 @@
|
| .Times(1)
|
| .RetiresOnSaturation();
|
| }
|
| + if (cull_face_enabled) {
|
| + EXPECT_CALL(*gl_, Enable(GL_CULL_FACE))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| + } else {
|
| + EXPECT_CALL(*gl_, Disable(GL_CULL_FACE))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| + }
|
| + if (scissor_test_enabled) {
|
| + EXPECT_CALL(*gl_, Enable(GL_SCISSOR_TEST))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| + } else {
|
| + EXPECT_CALL(*gl_, Disable(GL_SCISSOR_TEST))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| + }
|
| }
|
|
|
| void GLES2DecoderTestBase::SetupExpectationsForApplyingDefaultDirtyState() {
|
| @@ -552,7 +730,9 @@
|
| false, // depth enabled
|
| 0, // front stencil mask
|
| 0, // back stencil mask
|
| - false); // stencil enabled
|
| + false, // stencil enabled
|
| + false, // cull_face_enabled
|
| + false); // scissor_test_enabled
|
| }
|
|
|
| void GLES2DecoderTestBase::DoBindFramebuffer(
|
| @@ -776,6 +956,9 @@
|
|
|
| // GCC requires these declarations, but MSVC requires they not be present
|
| #ifndef COMPILER_MSVC
|
| +const int GLES2DecoderTestBase::kBackBufferWidth;
|
| +const int GLES2DecoderTestBase::kBackBufferHeight;
|
| +
|
| const GLint GLES2DecoderTestBase::kMaxTextureSize;
|
| const GLint GLES2DecoderTestBase::kMaxCubeMapTextureSize;
|
| const GLint GLES2DecoderTestBase::kNumVertexAttribs;
|
| @@ -785,7 +968,14 @@
|
| const GLint GLES2DecoderTestBase::kMaxFragmentUniformVectors;
|
| const GLint GLES2DecoderTestBase::kMaxVaryingVectors;
|
| const GLint GLES2DecoderTestBase::kMaxVertexUniformVectors;
|
| +const GLint GLES2DecoderTestBase::kMaxViewportWidth;
|
| +const GLint GLES2DecoderTestBase::kMaxViewportHeight;
|
|
|
| +const GLint GLES2DecoderTestBase::kViewportX;
|
| +const GLint GLES2DecoderTestBase::kViewportY;
|
| +const GLint GLES2DecoderTestBase::kViewportWidth;
|
| +const GLint GLES2DecoderTestBase::kViewportHeight;
|
| +
|
| const GLuint GLES2DecoderTestBase::kServiceAttrib0BufferId;
|
| const GLuint GLES2DecoderTestBase::kServiceFixedAttribBufferId;
|
|
|
| @@ -810,12 +1000,19 @@
|
| const uint32 GLES2DecoderTestBase::kNewServiceId;
|
| const uint32 GLES2DecoderTestBase::kInvalidClientId;
|
|
|
| -const int GLES2DecoderTestBase::kBackBufferWidth;
|
| -const int GLES2DecoderTestBase::kBackBufferHeight;
|
| -
|
| const GLuint GLES2DecoderTestBase::kServiceVertexShaderId;
|
| const GLuint GLES2DecoderTestBase::kServiceFragmentShaderId;
|
|
|
| +const GLuint GLES2DecoderTestBase::kServiceCopyTextureChromiumShaderId;
|
| +const GLuint GLES2DecoderTestBase::kServiceCopyTextureChromiumProgramId;
|
| +
|
| +const GLuint GLES2DecoderTestBase::kServiceCopyTextureChromiumTextureBufferId;
|
| +const GLuint GLES2DecoderTestBase::kServiceCopyTextureChromiumVertexBufferId;
|
| +const GLuint GLES2DecoderTestBase::kServiceCopyTextureChromiumFBOId;
|
| +const GLuint GLES2DecoderTestBase::kServiceCopyTextureChromiumPositionAttrib;
|
| +const GLuint GLES2DecoderTestBase::kServiceCopyTextureChromiumTexAttrib;
|
| +const GLuint GLES2DecoderTestBase::kServiceCopyTextureChromiumSamplerLocation;
|
| +
|
| const GLsizei GLES2DecoderTestBase::kNumVertices;
|
| const GLsizei GLES2DecoderTestBase::kNumIndices;
|
| const int GLES2DecoderTestBase::kValidIndexRangeStart;
|
| @@ -1174,6 +1371,10 @@
|
| EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER, buffer_id))
|
| .Times(1)
|
| .RetiresOnSaturation();
|
| +
|
| + EXPECT_CALL(*gl_, DisableVertexAttribArray(0))
|
| + .Times(1)
|
| + .RetiresOnSaturation();
|
| }
|
| }
|
|
|
|
|