Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(185)

Unified Diff: gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc

Issue 9968113: Addition of GL_CHROMIUM_copy_texture extension. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Correcting glEnableVertexAttribArray state. Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_, 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_, BindAttribLocation(
+ kServiceCopyTextureChromiumProgramId + program, 0, _))
+ .Times(1)
+ .RetiresOnSaturation();
+
+ EXPECT_CALL(*gl_, BindAttribLocation(
+ kServiceCopyTextureChromiumProgramId + program, 1, _))
+ .Times(1)
+ .RetiresOnSaturation();
+
+ 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();
}
}

Powered by Google App Engine
This is Rietveld 408576698