OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h" | 5 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 | 79 |
80 void GLES2DecoderTestBase::InitDecoder( | 80 void GLES2DecoderTestBase::InitDecoder( |
81 const char* extensions, | 81 const char* extensions, |
82 bool has_alpha, | 82 bool has_alpha, |
83 bool has_depth, | 83 bool has_depth, |
84 bool has_stencil, | 84 bool has_stencil, |
85 bool request_alpha, | 85 bool request_alpha, |
86 bool request_depth, | 86 bool request_depth, |
87 bool request_stencil, | 87 bool request_stencil, |
88 bool bind_generates_resource) { | 88 bool bind_generates_resource) { |
89 FramebufferManager::FramebufferInfo::ClearFramebufferCompleteComboMap(); | 89 Framebuffer::ClearFramebufferCompleteComboMap(); |
90 gl_.reset(new StrictMock<MockGLInterface>()); | 90 gl_.reset(new StrictMock<MockGLInterface>()); |
91 ::gfx::GLInterface::SetGLInterface(gl_.get()); | 91 ::gfx::GLInterface::SetGLInterface(gl_.get()); |
92 group_ = ContextGroup::Ref(new ContextGroup(NULL, | 92 group_ = scoped_refptr<ContextGroup>(new ContextGroup( |
93 NULL, | 93 NULL, |
94 memory_tracker_, | 94 NULL, |
95 bind_generates_resource)); | 95 memory_tracker_, |
| 96 bind_generates_resource)); |
96 | 97 |
97 InSequence sequence; | 98 InSequence sequence; |
98 | 99 |
99 TestHelper::SetupContextGroupInitExpectations(gl_.get(), | 100 TestHelper::SetupContextGroupInitExpectations(gl_.get(), |
100 DisallowedFeatures(), extensions); | 101 DisallowedFeatures(), extensions); |
101 | 102 |
102 // We initialize the ContextGroup with a MockGLES2Decoder so that | 103 // We initialize the ContextGroup with a MockGLES2Decoder so that |
103 // we can use the ContextGroup to figure out how the real GLES2Decoder | 104 // we can use the ContextGroup to figure out how the real GLES2Decoder |
104 // will initialize itself. | 105 // will initialize itself. |
105 mock_decoder_.reset(new MockGLES2Decoder()); | 106 mock_decoder_.reset(new MockGLES2Decoder()); |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
256 decoder_->set_log_synthesized_gl_errors(false); | 257 decoder_->set_log_synthesized_gl_errors(false); |
257 decoder_->Initialize( | 258 decoder_->Initialize( |
258 surface_, context_, false, surface_->GetSize(), DisallowedFeatures(), | 259 surface_, context_, false, surface_->GetSize(), DisallowedFeatures(), |
259 NULL, attribs); | 260 NULL, attribs); |
260 decoder_->MakeCurrent(); | 261 decoder_->MakeCurrent(); |
261 decoder_->set_engine(engine_.get()); | 262 decoder_->set_engine(engine_.get()); |
262 | 263 |
263 EXPECT_CALL(*gl_, GenBuffersARB(_, _)) | 264 EXPECT_CALL(*gl_, GenBuffersARB(_, _)) |
264 .WillOnce(SetArgumentPointee<1>(kServiceBufferId)) | 265 .WillOnce(SetArgumentPointee<1>(kServiceBufferId)) |
265 .RetiresOnSaturation(); | 266 .RetiresOnSaturation(); |
266 GenHelper<GenBuffersImmediate>(client_buffer_id_); | 267 GenHelper<cmds::GenBuffersImmediate>(client_buffer_id_); |
267 EXPECT_CALL(*gl_, GenFramebuffersEXT(_, _)) | 268 EXPECT_CALL(*gl_, GenFramebuffersEXT(_, _)) |
268 .WillOnce(SetArgumentPointee<1>(kServiceFramebufferId)) | 269 .WillOnce(SetArgumentPointee<1>(kServiceFramebufferId)) |
269 .RetiresOnSaturation(); | 270 .RetiresOnSaturation(); |
270 GenHelper<GenFramebuffersImmediate>(client_framebuffer_id_); | 271 GenHelper<cmds::GenFramebuffersImmediate>(client_framebuffer_id_); |
271 EXPECT_CALL(*gl_, GenRenderbuffersEXT(_, _)) | 272 EXPECT_CALL(*gl_, GenRenderbuffersEXT(_, _)) |
272 .WillOnce(SetArgumentPointee<1>(kServiceRenderbufferId)) | 273 .WillOnce(SetArgumentPointee<1>(kServiceRenderbufferId)) |
273 .RetiresOnSaturation(); | 274 .RetiresOnSaturation(); |
274 GenHelper<GenRenderbuffersImmediate>(client_renderbuffer_id_); | 275 GenHelper<cmds::GenRenderbuffersImmediate>(client_renderbuffer_id_); |
275 EXPECT_CALL(*gl_, GenTextures(_, _)) | 276 EXPECT_CALL(*gl_, GenTextures(_, _)) |
276 .WillOnce(SetArgumentPointee<1>(kServiceTextureId)) | 277 .WillOnce(SetArgumentPointee<1>(kServiceTextureId)) |
277 .RetiresOnSaturation(); | 278 .RetiresOnSaturation(); |
278 GenHelper<GenTexturesImmediate>(client_texture_id_); | 279 GenHelper<cmds::GenTexturesImmediate>(client_texture_id_); |
279 EXPECT_CALL(*gl_, GenBuffersARB(_, _)) | 280 EXPECT_CALL(*gl_, GenBuffersARB(_, _)) |
280 .WillOnce(SetArgumentPointee<1>(kServiceElementBufferId)) | 281 .WillOnce(SetArgumentPointee<1>(kServiceElementBufferId)) |
281 .RetiresOnSaturation(); | 282 .RetiresOnSaturation(); |
282 GenHelper<GenBuffersImmediate>(client_element_buffer_id_); | 283 GenHelper<cmds::GenBuffersImmediate>(client_element_buffer_id_); |
283 | 284 |
284 DoCreateProgram(client_program_id_, kServiceProgramId); | 285 DoCreateProgram(client_program_id_, kServiceProgramId); |
285 DoCreateShader(GL_VERTEX_SHADER, client_shader_id_, kServiceShaderId); | 286 DoCreateShader(GL_VERTEX_SHADER, client_shader_id_, kServiceShaderId); |
286 | 287 |
287 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 288 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
288 } | 289 } |
289 | 290 |
290 void GLES2DecoderTestBase::TearDown() { | 291 void GLES2DecoderTestBase::TearDown() { |
291 // All Tests should have read all their GLErrors before getting here. | 292 // All Tests should have read all their GLErrors before getting here. |
292 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 293 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
(...skipping 20 matching lines...) Expand all Loading... |
313 .Times(1) | 314 .Times(1) |
314 .RetiresOnSaturation(); | 315 .RetiresOnSaturation(); |
315 } | 316 } |
316 } | 317 } |
317 | 318 |
318 | 319 |
319 GLint GLES2DecoderTestBase::GetGLError() { | 320 GLint GLES2DecoderTestBase::GetGLError() { |
320 EXPECT_CALL(*gl_, GetError()) | 321 EXPECT_CALL(*gl_, GetError()) |
321 .WillOnce(Return(GL_NO_ERROR)) | 322 .WillOnce(Return(GL_NO_ERROR)) |
322 .RetiresOnSaturation(); | 323 .RetiresOnSaturation(); |
323 GetError cmd; | 324 cmds::GetError cmd; |
324 cmd.Init(shared_memory_id_, shared_memory_offset_); | 325 cmd.Init(shared_memory_id_, shared_memory_offset_); |
325 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 326 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
326 return static_cast<GLint>(*GetSharedMemoryAs<GLenum*>()); | 327 return static_cast<GLint>(*GetSharedMemoryAs<GLenum*>()); |
327 } | 328 } |
328 | 329 |
329 void GLES2DecoderTestBase::DoCreateShader( | 330 void GLES2DecoderTestBase::DoCreateShader( |
330 GLenum shader_type, GLuint client_id, GLuint service_id) { | 331 GLenum shader_type, GLuint client_id, GLuint service_id) { |
331 EXPECT_CALL(*gl_, CreateShader(shader_type)) | 332 EXPECT_CALL(*gl_, CreateShader(shader_type)) |
332 .Times(1) | 333 .Times(1) |
333 .WillOnce(Return(service_id)) | 334 .WillOnce(Return(service_id)) |
334 .RetiresOnSaturation(); | 335 .RetiresOnSaturation(); |
335 CreateShader cmd; | 336 cmds::CreateShader cmd; |
336 cmd.Init(shader_type, client_id); | 337 cmd.Init(shader_type, client_id); |
337 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 338 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
338 } | 339 } |
339 | 340 |
340 bool GLES2DecoderTestBase::DoIsShader(GLuint client_id) { | 341 bool GLES2DecoderTestBase::DoIsShader(GLuint client_id) { |
341 return IsObjectHelper<IsShader, IsShader::Result>(client_id); | 342 return IsObjectHelper<cmds::IsShader, cmds::IsShader::Result>(client_id); |
342 } | 343 } |
343 | 344 |
344 void GLES2DecoderTestBase::DoDeleteShader( | 345 void GLES2DecoderTestBase::DoDeleteShader( |
345 GLuint client_id, GLuint service_id) { | 346 GLuint client_id, GLuint service_id) { |
346 EXPECT_CALL(*gl_, DeleteShader(service_id)) | 347 EXPECT_CALL(*gl_, DeleteShader(service_id)) |
347 .Times(1) | 348 .Times(1) |
348 .RetiresOnSaturation(); | 349 .RetiresOnSaturation(); |
349 DeleteShader cmd; | 350 cmds::DeleteShader cmd; |
350 cmd.Init(client_id); | 351 cmd.Init(client_id); |
351 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 352 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
352 } | 353 } |
353 | 354 |
354 void GLES2DecoderTestBase::DoCreateProgram( | 355 void GLES2DecoderTestBase::DoCreateProgram( |
355 GLuint client_id, GLuint service_id) { | 356 GLuint client_id, GLuint service_id) { |
356 EXPECT_CALL(*gl_, CreateProgram()) | 357 EXPECT_CALL(*gl_, CreateProgram()) |
357 .Times(1) | 358 .Times(1) |
358 .WillOnce(Return(service_id)) | 359 .WillOnce(Return(service_id)) |
359 .RetiresOnSaturation(); | 360 .RetiresOnSaturation(); |
360 CreateProgram cmd; | 361 cmds::CreateProgram cmd; |
361 cmd.Init(client_id); | 362 cmd.Init(client_id); |
362 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 363 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
363 } | 364 } |
364 | 365 |
365 bool GLES2DecoderTestBase::DoIsProgram(GLuint client_id) { | 366 bool GLES2DecoderTestBase::DoIsProgram(GLuint client_id) { |
366 return IsObjectHelper<IsProgram, IsProgram::Result>(client_id); | 367 return IsObjectHelper<cmds::IsProgram, cmds::IsProgram::Result>(client_id); |
367 } | 368 } |
368 | 369 |
369 void GLES2DecoderTestBase::DoDeleteProgram( | 370 void GLES2DecoderTestBase::DoDeleteProgram( |
370 GLuint client_id, GLuint /* service_id */) { | 371 GLuint client_id, GLuint /* service_id */) { |
371 DeleteProgram cmd; | 372 cmds::DeleteProgram cmd; |
372 cmd.Init(client_id); | 373 cmd.Init(client_id); |
373 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 374 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
374 } | 375 } |
375 | 376 |
376 void GLES2DecoderTestBase::SetBucketAsCString( | 377 void GLES2DecoderTestBase::SetBucketAsCString( |
377 uint32 bucket_id, const char* str) { | 378 uint32 bucket_id, const char* str) { |
378 uint32 size = str ? (strlen(str) + 1) : 0; | 379 uint32 size = str ? (strlen(str) + 1) : 0; |
379 cmd::SetBucketSize cmd1; | 380 cmd::SetBucketSize cmd1; |
380 cmd1.Init(bucket_id, size); | 381 cmd1.Init(bucket_id, size); |
381 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); | 382 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
544 const GLuint kClientFragmentShaderId = 5002; | 545 const GLuint kClientFragmentShaderId = 5002; |
545 const GLuint kServiceFragmentShaderId = 6002; | 546 const GLuint kServiceFragmentShaderId = 6002; |
546 SetupShader(attribs, arraysize(attribs), uniforms, arraysize(uniforms), | 547 SetupShader(attribs, arraysize(attribs), uniforms, arraysize(uniforms), |
547 client_program_id_, kServiceProgramId, | 548 client_program_id_, kServiceProgramId, |
548 kClientVertexShaderId, kServiceVertexShaderId, | 549 kClientVertexShaderId, kServiceVertexShaderId, |
549 kClientFragmentShaderId, kServiceFragmentShaderId); | 550 kClientFragmentShaderId, kServiceFragmentShaderId); |
550 | 551 |
551 EXPECT_CALL(*gl_, UseProgram(kServiceProgramId)) | 552 EXPECT_CALL(*gl_, UseProgram(kServiceProgramId)) |
552 .Times(1) | 553 .Times(1) |
553 .RetiresOnSaturation(); | 554 .RetiresOnSaturation(); |
554 UseProgram cmd; | 555 cmds::UseProgram cmd; |
555 cmd.Init(client_program_id_); | 556 cmd.Init(client_program_id_); |
556 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 557 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
557 } | 558 } |
558 | 559 |
559 void GLES2DecoderTestBase::DoBindBuffer( | 560 void GLES2DecoderTestBase::DoBindBuffer( |
560 GLenum target, GLuint client_id, GLuint service_id) { | 561 GLenum target, GLuint client_id, GLuint service_id) { |
561 EXPECT_CALL(*gl_, BindBuffer(target, service_id)) | 562 EXPECT_CALL(*gl_, BindBuffer(target, service_id)) |
562 .Times(1) | 563 .Times(1) |
563 .RetiresOnSaturation(); | 564 .RetiresOnSaturation(); |
564 BindBuffer cmd; | 565 cmds::BindBuffer cmd; |
565 cmd.Init(target, client_id); | 566 cmd.Init(target, client_id); |
566 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 567 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
567 } | 568 } |
568 | 569 |
569 bool GLES2DecoderTestBase::DoIsBuffer(GLuint client_id) { | 570 bool GLES2DecoderTestBase::DoIsBuffer(GLuint client_id) { |
570 return IsObjectHelper<IsBuffer, IsBuffer::Result>(client_id); | 571 return IsObjectHelper<cmds::IsBuffer, cmds::IsBuffer::Result>(client_id); |
571 } | 572 } |
572 | 573 |
573 void GLES2DecoderTestBase::DoDeleteBuffer( | 574 void GLES2DecoderTestBase::DoDeleteBuffer( |
574 GLuint client_id, GLuint service_id) { | 575 GLuint client_id, GLuint service_id) { |
575 EXPECT_CALL(*gl_, DeleteBuffersARB(1, Pointee(service_id))) | 576 EXPECT_CALL(*gl_, DeleteBuffersARB(1, Pointee(service_id))) |
576 .Times(1) | 577 .Times(1) |
577 .RetiresOnSaturation(); | 578 .RetiresOnSaturation(); |
578 DeleteBuffers cmd; | 579 cmds::DeleteBuffers cmd; |
579 cmd.Init(1, shared_memory_id_, shared_memory_offset_); | 580 cmd.Init(1, shared_memory_id_, shared_memory_offset_); |
580 memcpy(shared_memory_address_, &client_id, sizeof(client_id)); | 581 memcpy(shared_memory_address_, &client_id, sizeof(client_id)); |
581 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 582 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
582 } | 583 } |
583 | 584 |
584 void GLES2DecoderTestBase::SetupExpectationsForApplyingDirtyState( | 585 void GLES2DecoderTestBase::SetupExpectationsForApplyingDirtyState( |
585 bool framebuffer_is_rgb, | 586 bool framebuffer_is_rgb, |
586 bool framebuffer_has_depth, | 587 bool framebuffer_has_depth, |
587 bool framebuffer_has_stencil, | 588 bool framebuffer_has_stencil, |
588 GLuint color_bits, | 589 GLuint color_bits, |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
671 false, // cull_face_enabled | 672 false, // cull_face_enabled |
672 false, // scissor_test_enabled | 673 false, // scissor_test_enabled |
673 false); // blend_enabled | 674 false); // blend_enabled |
674 } | 675 } |
675 | 676 |
676 void GLES2DecoderTestBase::DoBindFramebuffer( | 677 void GLES2DecoderTestBase::DoBindFramebuffer( |
677 GLenum target, GLuint client_id, GLuint service_id) { | 678 GLenum target, GLuint client_id, GLuint service_id) { |
678 EXPECT_CALL(*gl_, BindFramebufferEXT(target, service_id)) | 679 EXPECT_CALL(*gl_, BindFramebufferEXT(target, service_id)) |
679 .Times(1) | 680 .Times(1) |
680 .RetiresOnSaturation(); | 681 .RetiresOnSaturation(); |
681 BindFramebuffer cmd; | 682 cmds::BindFramebuffer cmd; |
682 cmd.Init(target, client_id); | 683 cmd.Init(target, client_id); |
683 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 684 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
684 } | 685 } |
685 | 686 |
686 bool GLES2DecoderTestBase::DoIsFramebuffer(GLuint client_id) { | 687 bool GLES2DecoderTestBase::DoIsFramebuffer(GLuint client_id) { |
687 return IsObjectHelper<IsFramebuffer, IsFramebuffer::Result>(client_id); | 688 return IsObjectHelper<cmds::IsFramebuffer, cmds::IsFramebuffer::Result>( |
| 689 client_id); |
688 } | 690 } |
689 | 691 |
690 void GLES2DecoderTestBase::DoDeleteFramebuffer( | 692 void GLES2DecoderTestBase::DoDeleteFramebuffer( |
691 GLuint client_id, GLuint service_id, | 693 GLuint client_id, GLuint service_id, |
692 bool reset_draw, GLenum draw_target, GLuint draw_id, | 694 bool reset_draw, GLenum draw_target, GLuint draw_id, |
693 bool reset_read, GLenum read_target, GLuint read_id) { | 695 bool reset_read, GLenum read_target, GLuint read_id) { |
694 if (reset_draw) { | 696 if (reset_draw) { |
695 EXPECT_CALL(*gl_, BindFramebufferEXT(draw_target, draw_id)) | 697 EXPECT_CALL(*gl_, BindFramebufferEXT(draw_target, draw_id)) |
696 .Times(1) | 698 .Times(1) |
697 .RetiresOnSaturation(); | 699 .RetiresOnSaturation(); |
698 } | 700 } |
699 if (reset_read) { | 701 if (reset_read) { |
700 EXPECT_CALL(*gl_, BindFramebufferEXT(read_target, read_id)) | 702 EXPECT_CALL(*gl_, BindFramebufferEXT(read_target, read_id)) |
701 .Times(1) | 703 .Times(1) |
702 .RetiresOnSaturation(); | 704 .RetiresOnSaturation(); |
703 } | 705 } |
704 EXPECT_CALL(*gl_, DeleteFramebuffersEXT(1, Pointee(service_id))) | 706 EXPECT_CALL(*gl_, DeleteFramebuffersEXT(1, Pointee(service_id))) |
705 .Times(1) | 707 .Times(1) |
706 .RetiresOnSaturation(); | 708 .RetiresOnSaturation(); |
707 DeleteFramebuffers cmd; | 709 cmds::DeleteFramebuffers cmd; |
708 cmd.Init(1, shared_memory_id_, shared_memory_offset_); | 710 cmd.Init(1, shared_memory_id_, shared_memory_offset_); |
709 memcpy(shared_memory_address_, &client_id, sizeof(client_id)); | 711 memcpy(shared_memory_address_, &client_id, sizeof(client_id)); |
710 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 712 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
711 } | 713 } |
712 | 714 |
713 void GLES2DecoderTestBase::DoBindRenderbuffer( | 715 void GLES2DecoderTestBase::DoBindRenderbuffer( |
714 GLenum target, GLuint client_id, GLuint service_id) { | 716 GLenum target, GLuint client_id, GLuint service_id) { |
715 EXPECT_CALL(*gl_, BindRenderbufferEXT(target, service_id)) | 717 EXPECT_CALL(*gl_, BindRenderbufferEXT(target, service_id)) |
716 .Times(1) | 718 .Times(1) |
717 .RetiresOnSaturation(); | 719 .RetiresOnSaturation(); |
718 BindRenderbuffer cmd; | 720 cmds::BindRenderbuffer cmd; |
719 cmd.Init(target, client_id); | 721 cmd.Init(target, client_id); |
720 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 722 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
721 } | 723 } |
722 | 724 |
723 bool GLES2DecoderTestBase::DoIsRenderbuffer(GLuint client_id) { | 725 bool GLES2DecoderTestBase::DoIsRenderbuffer(GLuint client_id) { |
724 return IsObjectHelper<IsRenderbuffer, IsRenderbuffer::Result>(client_id); | 726 return IsObjectHelper<cmds::IsRenderbuffer, cmds::IsRenderbuffer::Result>( |
| 727 client_id); |
725 } | 728 } |
726 | 729 |
727 void GLES2DecoderTestBase::DoDeleteRenderbuffer( | 730 void GLES2DecoderTestBase::DoDeleteRenderbuffer( |
728 GLuint client_id, GLuint service_id) { | 731 GLuint client_id, GLuint service_id) { |
729 EXPECT_CALL(*gl_, DeleteRenderbuffersEXT(1, Pointee(service_id))) | 732 EXPECT_CALL(*gl_, DeleteRenderbuffersEXT(1, Pointee(service_id))) |
730 .Times(1) | 733 .Times(1) |
731 .RetiresOnSaturation(); | 734 .RetiresOnSaturation(); |
732 DeleteRenderbuffers cmd; | 735 cmds::DeleteRenderbuffers cmd; |
733 cmd.Init(1, shared_memory_id_, shared_memory_offset_); | 736 cmd.Init(1, shared_memory_id_, shared_memory_offset_); |
734 memcpy(shared_memory_address_, &client_id, sizeof(client_id)); | 737 memcpy(shared_memory_address_, &client_id, sizeof(client_id)); |
735 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 738 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
736 } | 739 } |
737 | 740 |
738 void GLES2DecoderTestBase::DoBindTexture( | 741 void GLES2DecoderTestBase::DoBindTexture( |
739 GLenum target, GLuint client_id, GLuint service_id) { | 742 GLenum target, GLuint client_id, GLuint service_id) { |
740 EXPECT_CALL(*gl_, BindTexture(target, service_id)) | 743 EXPECT_CALL(*gl_, BindTexture(target, service_id)) |
741 .Times(1) | 744 .Times(1) |
742 .RetiresOnSaturation(); | 745 .RetiresOnSaturation(); |
743 BindTexture cmd; | 746 cmds::BindTexture cmd; |
744 cmd.Init(target, client_id); | 747 cmd.Init(target, client_id); |
745 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 748 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
746 } | 749 } |
747 | 750 |
748 bool GLES2DecoderTestBase::DoIsTexture(GLuint client_id) { | 751 bool GLES2DecoderTestBase::DoIsTexture(GLuint client_id) { |
749 return IsObjectHelper<IsTexture, IsTexture::Result>(client_id); | 752 return IsObjectHelper<cmds::IsTexture, cmds::IsTexture::Result>(client_id); |
750 } | 753 } |
751 | 754 |
752 void GLES2DecoderTestBase::DoDeleteTexture( | 755 void GLES2DecoderTestBase::DoDeleteTexture( |
753 GLuint client_id, GLuint service_id) { | 756 GLuint client_id, GLuint service_id) { |
754 EXPECT_CALL(*gl_, DeleteTextures(1, Pointee(service_id))) | 757 EXPECT_CALL(*gl_, DeleteTextures(1, Pointee(service_id))) |
755 .Times(1) | 758 .Times(1) |
756 .RetiresOnSaturation(); | 759 .RetiresOnSaturation(); |
757 DeleteTextures cmd; | 760 cmds::DeleteTextures cmd; |
758 cmd.Init(1, shared_memory_id_, shared_memory_offset_); | 761 cmd.Init(1, shared_memory_id_, shared_memory_offset_); |
759 memcpy(shared_memory_address_, &client_id, sizeof(client_id)); | 762 memcpy(shared_memory_address_, &client_id, sizeof(client_id)); |
760 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 763 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
761 } | 764 } |
762 | 765 |
763 void GLES2DecoderTestBase::DoTexImage2D( | 766 void GLES2DecoderTestBase::DoTexImage2D( |
764 GLenum target, GLint level, GLenum internal_format, | 767 GLenum target, GLint level, GLenum internal_format, |
765 GLsizei width, GLsizei height, GLint border, | 768 GLsizei width, GLsizei height, GLint border, |
766 GLenum format, GLenum type, | 769 GLenum format, GLenum type, |
767 uint32 shared_memory_id, uint32 shared_memory_offset) { | 770 uint32 shared_memory_id, uint32 shared_memory_offset) { |
768 EXPECT_CALL(*gl_, GetError()) | 771 EXPECT_CALL(*gl_, GetError()) |
769 .WillOnce(Return(GL_NO_ERROR)) | 772 .WillOnce(Return(GL_NO_ERROR)) |
770 .RetiresOnSaturation(); | 773 .RetiresOnSaturation(); |
771 EXPECT_CALL(*gl_, TexImage2D(target, level, internal_format, | 774 EXPECT_CALL(*gl_, TexImage2D(target, level, internal_format, |
772 width, height, border, format, type, _)) | 775 width, height, border, format, type, _)) |
773 .Times(1) | 776 .Times(1) |
774 .RetiresOnSaturation(); | 777 .RetiresOnSaturation(); |
775 EXPECT_CALL(*gl_, GetError()) | 778 EXPECT_CALL(*gl_, GetError()) |
776 .WillOnce(Return(GL_NO_ERROR)) | 779 .WillOnce(Return(GL_NO_ERROR)) |
777 .RetiresOnSaturation(); | 780 .RetiresOnSaturation(); |
778 TexImage2D cmd; | 781 cmds::TexImage2D cmd; |
779 cmd.Init(target, level, internal_format, width, height, border, format, | 782 cmd.Init(target, level, internal_format, width, height, border, format, |
780 type, shared_memory_id, shared_memory_offset); | 783 type, shared_memory_id, shared_memory_offset); |
781 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 784 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
782 } | 785 } |
783 | 786 |
784 void GLES2DecoderTestBase::DoCompressedTexImage2D( | 787 void GLES2DecoderTestBase::DoCompressedTexImage2D( |
785 GLenum target, GLint level, GLenum format, | 788 GLenum target, GLint level, GLenum format, |
786 GLsizei width, GLsizei height, GLint border, | 789 GLsizei width, GLsizei height, GLint border, |
787 GLsizei size, uint32 bucket_id) { | 790 GLsizei size, uint32 bucket_id) { |
788 EXPECT_CALL(*gl_, GetError()) | 791 EXPECT_CALL(*gl_, GetError()) |
789 .WillOnce(Return(GL_NO_ERROR)) | 792 .WillOnce(Return(GL_NO_ERROR)) |
790 .RetiresOnSaturation(); | 793 .RetiresOnSaturation(); |
791 EXPECT_CALL(*gl_, CompressedTexImage2D( | 794 EXPECT_CALL(*gl_, CompressedTexImage2D( |
792 target, level, format, width, height, border, size, _)) | 795 target, level, format, width, height, border, size, _)) |
793 .Times(1) | 796 .Times(1) |
794 .RetiresOnSaturation(); | 797 .RetiresOnSaturation(); |
795 EXPECT_CALL(*gl_, GetError()) | 798 EXPECT_CALL(*gl_, GetError()) |
796 .WillOnce(Return(GL_NO_ERROR)) | 799 .WillOnce(Return(GL_NO_ERROR)) |
797 .RetiresOnSaturation(); | 800 .RetiresOnSaturation(); |
798 CommonDecoder::Bucket* bucket = decoder_->CreateBucket(bucket_id); | 801 CommonDecoder::Bucket* bucket = decoder_->CreateBucket(bucket_id); |
799 bucket->SetSize(size); | 802 bucket->SetSize(size); |
800 CompressedTexImage2DBucket cmd; | 803 cmds::CompressedTexImage2DBucket cmd; |
801 cmd.Init( | 804 cmd.Init( |
802 target, level, format, width, height, border, | 805 target, level, format, width, height, border, |
803 bucket_id); | 806 bucket_id); |
804 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 807 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
805 } | 808 } |
806 | 809 |
807 void GLES2DecoderTestBase::DoTexImage2DSameSize( | 810 void GLES2DecoderTestBase::DoTexImage2DSameSize( |
808 GLenum target, GLint level, GLenum internal_format, | 811 GLenum target, GLint level, GLenum internal_format, |
809 GLsizei width, GLsizei height, GLint border, | 812 GLsizei width, GLsizei height, GLint border, |
810 GLenum format, GLenum type, | 813 GLenum format, GLenum type, |
811 uint32 shared_memory_id, uint32 shared_memory_offset) { | 814 uint32 shared_memory_id, uint32 shared_memory_offset) { |
812 if (GLES2Decoder::IsAngle()) { | 815 if (GLES2Decoder::IsAngle()) { |
813 EXPECT_CALL(*gl_, TexSubImage2D( | 816 EXPECT_CALL(*gl_, TexSubImage2D( |
814 target, level, 0, 0, width, height, format, type, _)) | 817 target, level, 0, 0, width, height, format, type, _)) |
815 .Times(1) | 818 .Times(1) |
816 .RetiresOnSaturation(); | 819 .RetiresOnSaturation(); |
817 } else { | 820 } else { |
818 EXPECT_CALL(*gl_, GetError()) | 821 EXPECT_CALL(*gl_, GetError()) |
819 .WillOnce(Return(GL_NO_ERROR)) | 822 .WillOnce(Return(GL_NO_ERROR)) |
820 .RetiresOnSaturation(); | 823 .RetiresOnSaturation(); |
821 EXPECT_CALL(*gl_, TexImage2D(target, level, internal_format, | 824 EXPECT_CALL(*gl_, TexImage2D(target, level, internal_format, |
822 width, height, border, format, type, _)) | 825 width, height, border, format, type, _)) |
823 .Times(1) | 826 .Times(1) |
824 .RetiresOnSaturation(); | 827 .RetiresOnSaturation(); |
825 EXPECT_CALL(*gl_, GetError()) | 828 EXPECT_CALL(*gl_, GetError()) |
826 .WillOnce(Return(GL_NO_ERROR)) | 829 .WillOnce(Return(GL_NO_ERROR)) |
827 .RetiresOnSaturation(); | 830 .RetiresOnSaturation(); |
828 } | 831 } |
829 TexImage2D cmd; | 832 cmds::TexImage2D cmd; |
830 cmd.Init(target, level, internal_format, width, height, border, format, | 833 cmd.Init(target, level, internal_format, width, height, border, format, |
831 type, shared_memory_id, shared_memory_offset); | 834 type, shared_memory_id, shared_memory_offset); |
832 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 835 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
833 } | 836 } |
834 | 837 |
835 void GLES2DecoderTestBase::DoRenderbufferStorage( | 838 void GLES2DecoderTestBase::DoRenderbufferStorage( |
836 GLenum target, GLenum internal_format, GLenum actual_format, | 839 GLenum target, GLenum internal_format, GLenum actual_format, |
837 GLsizei width, GLsizei height, GLenum error) { | 840 GLsizei width, GLsizei height, GLenum error) { |
838 EXPECT_CALL(*gl_, GetError()) | 841 EXPECT_CALL(*gl_, GetError()) |
839 .WillOnce(Return(GL_NO_ERROR)) | 842 .WillOnce(Return(GL_NO_ERROR)) |
840 .RetiresOnSaturation(); | 843 .RetiresOnSaturation(); |
841 EXPECT_CALL(*gl_, RenderbufferStorageEXT( | 844 EXPECT_CALL(*gl_, RenderbufferStorageEXT( |
842 target, actual_format, width, height)) | 845 target, actual_format, width, height)) |
843 .Times(1) | 846 .Times(1) |
844 .RetiresOnSaturation(); | 847 .RetiresOnSaturation(); |
845 EXPECT_CALL(*gl_, GetError()) | 848 EXPECT_CALL(*gl_, GetError()) |
846 .WillOnce(Return(error)) | 849 .WillOnce(Return(error)) |
847 .RetiresOnSaturation(); | 850 .RetiresOnSaturation(); |
848 RenderbufferStorage cmd; | 851 cmds::RenderbufferStorage cmd; |
849 cmd.Init(target, internal_format, width, height); | 852 cmd.Init(target, internal_format, width, height); |
850 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 853 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
851 } | 854 } |
852 | 855 |
853 void GLES2DecoderTestBase::DoFramebufferTexture2D( | 856 void GLES2DecoderTestBase::DoFramebufferTexture2D( |
854 GLenum target, GLenum attachment, GLenum textarget, | 857 GLenum target, GLenum attachment, GLenum textarget, |
855 GLuint texture_client_id, GLuint texture_service_id, GLint level, | 858 GLuint texture_client_id, GLuint texture_service_id, GLint level, |
856 GLenum error) { | 859 GLenum error) { |
857 EXPECT_CALL(*gl_, GetError()) | 860 EXPECT_CALL(*gl_, GetError()) |
858 .WillOnce(Return(GL_NO_ERROR)) | 861 .WillOnce(Return(GL_NO_ERROR)) |
859 .RetiresOnSaturation(); | 862 .RetiresOnSaturation(); |
860 EXPECT_CALL(*gl_, FramebufferTexture2DEXT( | 863 EXPECT_CALL(*gl_, FramebufferTexture2DEXT( |
861 target, attachment, textarget, texture_service_id, level)) | 864 target, attachment, textarget, texture_service_id, level)) |
862 .Times(1) | 865 .Times(1) |
863 .RetiresOnSaturation(); | 866 .RetiresOnSaturation(); |
864 EXPECT_CALL(*gl_, GetError()) | 867 EXPECT_CALL(*gl_, GetError()) |
865 .WillOnce(Return(error)) | 868 .WillOnce(Return(error)) |
866 .RetiresOnSaturation(); | 869 .RetiresOnSaturation(); |
867 FramebufferTexture2D cmd; | 870 cmds::FramebufferTexture2D cmd; |
868 cmd.Init(target, attachment, textarget, texture_client_id, level); | 871 cmd.Init(target, attachment, textarget, texture_client_id, level); |
869 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 872 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
870 } | 873 } |
871 | 874 |
872 void GLES2DecoderTestBase::DoFramebufferRenderbuffer( | 875 void GLES2DecoderTestBase::DoFramebufferRenderbuffer( |
873 GLenum target, | 876 GLenum target, |
874 GLenum attachment, | 877 GLenum attachment, |
875 GLenum renderbuffer_target, | 878 GLenum renderbuffer_target, |
876 GLuint renderbuffer_client_id, | 879 GLuint renderbuffer_client_id, |
877 GLuint renderbuffer_service_id, | 880 GLuint renderbuffer_service_id, |
878 GLenum error) { | 881 GLenum error) { |
879 EXPECT_CALL(*gl_, GetError()) | 882 EXPECT_CALL(*gl_, GetError()) |
880 .WillOnce(Return(GL_NO_ERROR)) | 883 .WillOnce(Return(GL_NO_ERROR)) |
881 .RetiresOnSaturation(); | 884 .RetiresOnSaturation(); |
882 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT( | 885 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT( |
883 target, attachment, renderbuffer_target, renderbuffer_service_id)) | 886 target, attachment, renderbuffer_target, renderbuffer_service_id)) |
884 .Times(1) | 887 .Times(1) |
885 .RetiresOnSaturation(); | 888 .RetiresOnSaturation(); |
886 EXPECT_CALL(*gl_, GetError()) | 889 EXPECT_CALL(*gl_, GetError()) |
887 .WillOnce(Return(error)) | 890 .WillOnce(Return(error)) |
888 .RetiresOnSaturation(); | 891 .RetiresOnSaturation(); |
889 FramebufferRenderbuffer cmd; | 892 cmds::FramebufferRenderbuffer cmd; |
890 cmd.Init(target, attachment, renderbuffer_target, renderbuffer_client_id); | 893 cmd.Init(target, attachment, renderbuffer_target, renderbuffer_client_id); |
891 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 894 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
892 } | 895 } |
893 | 896 |
894 void GLES2DecoderTestBase::DoVertexAttribPointer( | 897 void GLES2DecoderTestBase::DoVertexAttribPointer( |
895 GLuint index, GLint size, GLenum type, GLsizei stride, GLuint offset) { | 898 GLuint index, GLint size, GLenum type, GLsizei stride, GLuint offset) { |
896 EXPECT_CALL(*gl_, | 899 EXPECT_CALL(*gl_, |
897 VertexAttribPointer(index, size, type, GL_FALSE, stride, | 900 VertexAttribPointer(index, size, type, GL_FALSE, stride, |
898 BufferOffset(offset))) | 901 BufferOffset(offset))) |
899 .Times(1) | 902 .Times(1) |
900 .RetiresOnSaturation(); | 903 .RetiresOnSaturation(); |
901 VertexAttribPointer cmd; | 904 cmds::VertexAttribPointer cmd; |
902 cmd.Init(index, size, GL_FLOAT, GL_FALSE, stride, offset); | 905 cmd.Init(index, size, GL_FLOAT, GL_FALSE, stride, offset); |
903 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 906 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
904 } | 907 } |
905 | 908 |
906 void GLES2DecoderTestBase::DoVertexAttribDivisorANGLE( | 909 void GLES2DecoderTestBase::DoVertexAttribDivisorANGLE( |
907 GLuint index, GLuint divisor) { | 910 GLuint index, GLuint divisor) { |
908 EXPECT_CALL(*gl_, | 911 EXPECT_CALL(*gl_, |
909 VertexAttribDivisorANGLE(index, divisor)) | 912 VertexAttribDivisorANGLE(index, divisor)) |
910 .Times(1) | 913 .Times(1) |
911 .RetiresOnSaturation(); | 914 .RetiresOnSaturation(); |
912 VertexAttribDivisorANGLE cmd; | 915 cmds::VertexAttribDivisorANGLE cmd; |
913 cmd.Init(index, divisor); | 916 cmd.Init(index, divisor); |
914 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 917 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
915 } | 918 } |
916 | 919 |
917 void GLES2DecoderTestBase::AddExpectationsForGenVertexArraysOES(){ | 920 void GLES2DecoderTestBase::AddExpectationsForGenVertexArraysOES(){ |
918 if (group_->feature_info()->feature_flags().native_vertex_array_object) { | 921 if (group_->feature_info()->feature_flags().native_vertex_array_object) { |
919 EXPECT_CALL(*gl_, GenVertexArraysOES(1, _)) | 922 EXPECT_CALL(*gl_, GenVertexArraysOES(1, _)) |
920 .WillOnce(SetArgumentPointee<1>(kServiceVertexArrayId)) | 923 .WillOnce(SetArgumentPointee<1>(kServiceVertexArrayId)) |
921 .RetiresOnSaturation(); | 924 .RetiresOnSaturation(); |
922 } | 925 } |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1111 SetupShader(attribs, arraysize(attribs), uniforms, arraysize(uniforms), | 1114 SetupShader(attribs, arraysize(attribs), uniforms, arraysize(uniforms), |
1112 client_program_id_, kServiceProgramId, | 1115 client_program_id_, kServiceProgramId, |
1113 client_vertex_shader_id_, kServiceVertexShaderId, | 1116 client_vertex_shader_id_, kServiceVertexShaderId, |
1114 client_fragment_shader_id_, kServiceFragmentShaderId); | 1117 client_fragment_shader_id_, kServiceFragmentShaderId); |
1115 } | 1118 } |
1116 | 1119 |
1117 { | 1120 { |
1118 EXPECT_CALL(*gl_, UseProgram(kServiceProgramId)) | 1121 EXPECT_CALL(*gl_, UseProgram(kServiceProgramId)) |
1119 .Times(1) | 1122 .Times(1) |
1120 .RetiresOnSaturation(); | 1123 .RetiresOnSaturation(); |
1121 UseProgram cmd; | 1124 cmds::UseProgram cmd; |
1122 cmd.Init(client_program_id_); | 1125 cmd.Init(client_program_id_); |
1123 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1126 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
1124 } | 1127 } |
1125 } | 1128 } |
1126 | 1129 |
1127 void GLES2DecoderTestBase::SetupCubemapProgram() { | 1130 void GLES2DecoderTestBase::SetupCubemapProgram() { |
1128 { | 1131 { |
1129 static AttribInfo attribs[] = { | 1132 static AttribInfo attribs[] = { |
1130 { kAttrib1Name, kAttrib1Size, kAttrib1Type, kAttrib1Location, }, | 1133 { kAttrib1Name, kAttrib1Size, kAttrib1Type, kAttrib1Location, }, |
1131 { kAttrib2Name, kAttrib2Size, kAttrib2Type, kAttrib2Location, }, | 1134 { kAttrib2Name, kAttrib2Size, kAttrib2Type, kAttrib2Location, }, |
(...skipping 13 matching lines...) Expand all Loading... |
1145 SetupShader(attribs, arraysize(attribs), uniforms, arraysize(uniforms), | 1148 SetupShader(attribs, arraysize(attribs), uniforms, arraysize(uniforms), |
1146 client_program_id_, kServiceProgramId, | 1149 client_program_id_, kServiceProgramId, |
1147 client_vertex_shader_id_, kServiceVertexShaderId, | 1150 client_vertex_shader_id_, kServiceVertexShaderId, |
1148 client_fragment_shader_id_, kServiceFragmentShaderId); | 1151 client_fragment_shader_id_, kServiceFragmentShaderId); |
1149 } | 1152 } |
1150 | 1153 |
1151 { | 1154 { |
1152 EXPECT_CALL(*gl_, UseProgram(kServiceProgramId)) | 1155 EXPECT_CALL(*gl_, UseProgram(kServiceProgramId)) |
1153 .Times(1) | 1156 .Times(1) |
1154 .RetiresOnSaturation(); | 1157 .RetiresOnSaturation(); |
1155 UseProgram cmd; | 1158 cmds::UseProgram cmd; |
1156 cmd.Init(client_program_id_); | 1159 cmd.Init(client_program_id_); |
1157 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1160 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
1158 } | 1161 } |
1159 } | 1162 } |
1160 | 1163 |
1161 void GLES2DecoderWithShaderTestBase::TearDown() { | 1164 void GLES2DecoderWithShaderTestBase::TearDown() { |
1162 GLES2DecoderTestBase::TearDown(); | 1165 GLES2DecoderTestBase::TearDown(); |
1163 } | 1166 } |
1164 | 1167 |
1165 void GLES2DecoderTestBase::SetupShader( | 1168 void GLES2DecoderTestBase::SetupShader( |
(...skipping 17 matching lines...) Expand all Loading... |
1183 gl_.get(), attribs, num_attribs, uniforms, num_uniforms, | 1186 gl_.get(), attribs, num_attribs, uniforms, num_uniforms, |
1184 program_service_id); | 1187 program_service_id); |
1185 } | 1188 } |
1186 | 1189 |
1187 DoCreateShader( | 1190 DoCreateShader( |
1188 GL_VERTEX_SHADER, vertex_shader_client_id, vertex_shader_service_id); | 1191 GL_VERTEX_SHADER, vertex_shader_client_id, vertex_shader_service_id); |
1189 DoCreateShader( | 1192 DoCreateShader( |
1190 GL_FRAGMENT_SHADER, fragment_shader_client_id, | 1193 GL_FRAGMENT_SHADER, fragment_shader_client_id, |
1191 fragment_shader_service_id); | 1194 fragment_shader_service_id); |
1192 | 1195 |
1193 GetShaderInfo(vertex_shader_client_id)->SetStatus(true, "", NULL); | 1196 GetShader(vertex_shader_client_id)->SetStatus(true, "", NULL); |
1194 GetShaderInfo(fragment_shader_client_id)->SetStatus(true, "", NULL); | 1197 GetShader(fragment_shader_client_id)->SetStatus(true, "", NULL); |
1195 | 1198 |
1196 AttachShader attach_cmd; | 1199 cmds::AttachShader attach_cmd; |
1197 attach_cmd.Init(program_client_id, vertex_shader_client_id); | 1200 attach_cmd.Init(program_client_id, vertex_shader_client_id); |
1198 EXPECT_EQ(error::kNoError, ExecuteCmd(attach_cmd)); | 1201 EXPECT_EQ(error::kNoError, ExecuteCmd(attach_cmd)); |
1199 | 1202 |
1200 attach_cmd.Init(program_client_id, fragment_shader_client_id); | 1203 attach_cmd.Init(program_client_id, fragment_shader_client_id); |
1201 EXPECT_EQ(error::kNoError, ExecuteCmd(attach_cmd)); | 1204 EXPECT_EQ(error::kNoError, ExecuteCmd(attach_cmd)); |
1202 | 1205 |
1203 LinkProgram link_cmd; | 1206 cmds::LinkProgram link_cmd; |
1204 link_cmd.Init(program_client_id); | 1207 link_cmd.Init(program_client_id); |
1205 | 1208 |
1206 EXPECT_EQ(error::kNoError, ExecuteCmd(link_cmd)); | 1209 EXPECT_EQ(error::kNoError, ExecuteCmd(link_cmd)); |
1207 | 1210 |
1208 // Assume the next command will be UseProgram. | 1211 // Assume the next command will be UseProgram. |
1209 SetupExpectationsForClearingUniforms(uniforms, num_uniforms); | 1212 SetupExpectationsForClearingUniforms(uniforms, num_uniforms); |
1210 } | 1213 } |
1211 | 1214 |
1212 void GLES2DecoderTestBase::DoEnableVertexAttribArray(GLint index) { | 1215 void GLES2DecoderTestBase::DoEnableVertexAttribArray(GLint index) { |
1213 EXPECT_CALL(*gl_, EnableVertexAttribArray(index)) | 1216 EXPECT_CALL(*gl_, EnableVertexAttribArray(index)) |
1214 .Times(1) | 1217 .Times(1) |
1215 .RetiresOnSaturation(); | 1218 .RetiresOnSaturation(); |
1216 EnableVertexAttribArray cmd; | 1219 cmds::EnableVertexAttribArray cmd; |
1217 cmd.Init(index); | 1220 cmd.Init(index); |
1218 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1221 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
1219 } | 1222 } |
1220 | 1223 |
1221 void GLES2DecoderTestBase::DoBufferData(GLenum target, GLsizei size) { | 1224 void GLES2DecoderTestBase::DoBufferData(GLenum target, GLsizei size) { |
1222 EXPECT_CALL(*gl_, GetError()) | 1225 EXPECT_CALL(*gl_, GetError()) |
1223 .WillOnce(Return(GL_NO_ERROR)) | 1226 .WillOnce(Return(GL_NO_ERROR)) |
1224 .RetiresOnSaturation(); | 1227 .RetiresOnSaturation(); |
1225 EXPECT_CALL(*gl_, BufferData(target, size, _, GL_STREAM_DRAW)) | 1228 EXPECT_CALL(*gl_, BufferData(target, size, _, GL_STREAM_DRAW)) |
1226 .Times(1) | 1229 .Times(1) |
1227 .RetiresOnSaturation(); | 1230 .RetiresOnSaturation(); |
1228 EXPECT_CALL(*gl_, GetError()) | 1231 EXPECT_CALL(*gl_, GetError()) |
1229 .WillOnce(Return(GL_NO_ERROR)) | 1232 .WillOnce(Return(GL_NO_ERROR)) |
1230 .RetiresOnSaturation(); | 1233 .RetiresOnSaturation(); |
1231 BufferData cmd; | 1234 cmds::BufferData cmd; |
1232 cmd.Init(target, size, 0, 0, GL_STREAM_DRAW); | 1235 cmd.Init(target, size, 0, 0, GL_STREAM_DRAW); |
1233 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1236 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
1234 } | 1237 } |
1235 | 1238 |
1236 void GLES2DecoderTestBase::DoBufferSubData( | 1239 void GLES2DecoderTestBase::DoBufferSubData( |
1237 GLenum target, GLint offset, GLsizei size, const void* data) { | 1240 GLenum target, GLint offset, GLsizei size, const void* data) { |
1238 EXPECT_CALL(*gl_, BufferSubData(target, offset, size, | 1241 EXPECT_CALL(*gl_, BufferSubData(target, offset, size, |
1239 shared_memory_address_)) | 1242 shared_memory_address_)) |
1240 .Times(1) | 1243 .Times(1) |
1241 .RetiresOnSaturation(); | 1244 .RetiresOnSaturation(); |
1242 memcpy(shared_memory_address_, data, size); | 1245 memcpy(shared_memory_address_, data, size); |
1243 BufferSubData cmd; | 1246 cmds::BufferSubData cmd; |
1244 cmd.Init(target, offset, size, shared_memory_id_, shared_memory_offset_); | 1247 cmd.Init(target, offset, size, shared_memory_id_, shared_memory_offset_); |
1245 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1248 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
1246 } | 1249 } |
1247 | 1250 |
1248 void GLES2DecoderTestBase::SetupVertexBuffer() { | 1251 void GLES2DecoderTestBase::SetupVertexBuffer() { |
1249 DoEnableVertexAttribArray(1); | 1252 DoEnableVertexAttribArray(1); |
1250 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); | 1253 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); |
1251 GLfloat f = 0; | 1254 GLfloat f = 0; |
1252 DoBufferData(GL_ARRAY_BUFFER, kNumVertices * 2 * sizeof(f)); | 1255 DoBufferData(GL_ARRAY_BUFFER, kNumVertices * 2 * sizeof(f)); |
1253 } | 1256 } |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1376 SetupDefaultProgram(); | 1379 SetupDefaultProgram(); |
1377 } | 1380 } |
1378 | 1381 |
1379 // Include the auto-generated part of this file. We split this because it means | 1382 // Include the auto-generated part of this file. We split this because it means |
1380 // we can easily edit the non-auto generated parts right here in this file | 1383 // we can easily edit the non-auto generated parts right here in this file |
1381 // instead of having to edit some template or the code generator. | 1384 // instead of having to edit some template or the code generator. |
1382 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_0_autogen.h" | 1385 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_0_autogen.h" |
1383 | 1386 |
1384 } // namespace gles2 | 1387 } // namespace gles2 |
1385 } // namespace gpu | 1388 } // namespace gpu |
OLD | NEW |