| Index: gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
|
| diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
|
| index c75354ab5a863835473c6f8463a261ed460525df..07d1eaf2a4945b372d030ae4a557880bcb7f42de 100644
|
| --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
|
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
|
| @@ -100,6 +100,7 @@ GLES2DecoderTestBase::GLES2DecoderTestBase()
|
| client_vertexarray_id_(124),
|
| client_valuebuffer_id_(125),
|
| client_transformfeedback_id_(126),
|
| + client_sync_id_(127),
|
| service_renderbuffer_id_(0),
|
| service_renderbuffer_valid_(false),
|
| ignore_cached_state_for_test_(GetParam()),
|
| @@ -430,6 +431,7 @@ void GLES2DecoderTestBase::InitDecoderWithCommandLine(
|
| .WillOnce(SetArgumentPointee<1>(kServiceTransformFeedbackId))
|
| .RetiresOnSaturation();
|
| GenHelper<cmds::GenTransformFeedbacksImmediate>(client_transformfeedback_id_);
|
| + DoFenceSync(client_sync_id_, kServiceSyncId);
|
| if (reset_unsafe_es3_apis_enabled) {
|
| decoder_->set_unsafe_es3_apis_enabled(false);
|
| }
|
| @@ -536,6 +538,17 @@ void GLES2DecoderTestBase::DoDeleteProgram(
|
| EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
|
| }
|
|
|
| +void GLES2DecoderTestBase::DoFenceSync(
|
| + GLuint client_id, GLuint service_id) {
|
| + EXPECT_CALL(*gl_, FenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0))
|
| + .Times(1)
|
| + .WillOnce(Return(reinterpret_cast<GLsync>(service_id)))
|
| + .RetiresOnSaturation();
|
| + cmds::FenceSync cmd;
|
| + cmd.Init(client_id);
|
| + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
|
| +}
|
| +
|
| void GLES2DecoderTestBase::SetBucketAsCString(
|
| uint32 bucket_id, const char* str) {
|
| uint32 size = str ? (strlen(str) + 1) : 0;
|
| @@ -551,6 +564,39 @@ void GLES2DecoderTestBase::SetBucketAsCString(
|
| }
|
| }
|
|
|
| +void GLES2DecoderTestBase::SetBucketAsCStrings(
|
| + uint32 bucket_id, GLsizei count, const char** str,
|
| + GLsizei count_in_header, char str_end) {
|
| + uint32_t header_size = sizeof(GLint) * (count + 1);
|
| + uint32_t total_size = header_size;
|
| + scoped_ptr<GLint[]> header(new GLint[count + 1]);
|
| + header[0] = static_cast<GLint>(count_in_header);
|
| + for (GLsizei ii = 0; ii < count; ++ii) {
|
| + header[ii + 1] = str && str[ii] ? strlen(str[ii]) : 0;
|
| + total_size += header[ii + 1] + 1;
|
| + }
|
| + cmd::SetBucketSize cmd1;
|
| + cmd1.Init(bucket_id, total_size);
|
| + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1));
|
| + memcpy(shared_memory_address_, header.get(), header_size);
|
| + uint32_t offset = header_size;
|
| + for (GLsizei ii = 0; ii < count; ++ii) {
|
| + if (str && str[ii]) {
|
| + size_t str_len = strlen(str[ii]);
|
| + memcpy(reinterpret_cast<char*>(shared_memory_address_) + offset,
|
| + str[ii], str_len);
|
| + offset += str_len;
|
| + }
|
| + memcpy(reinterpret_cast<char*>(shared_memory_address_) + offset,
|
| + &str_end, 1);
|
| + offset += 1;
|
| + }
|
| + cmd::SetBucketData cmd2;
|
| + cmd2.Init(bucket_id, 0, total_size, kSharedMemoryId, kSharedMemoryOffset);
|
| + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
|
| + ClearSharedMemory();
|
| +}
|
| +
|
| void GLES2DecoderTestBase::SetupClearTextureExpectations(
|
| GLuint service_id,
|
| GLuint old_service_id,
|
| @@ -1274,6 +1320,7 @@ const GLuint GLES2DecoderTestBase::kServiceElementBufferId;
|
| const GLuint GLES2DecoderTestBase::kServiceQueryId;
|
| const GLuint GLES2DecoderTestBase::kServiceVertexArrayId;
|
| const GLuint GLES2DecoderTestBase::kServiceTransformFeedbackId;
|
| +const GLuint GLES2DecoderTestBase::kServiceSyncId;
|
|
|
| const int32 GLES2DecoderTestBase::kSharedMemoryId;
|
| const size_t GLES2DecoderTestBase::kSharedBufferSize;
|
|
|