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

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder_unittest_framebuffers.cc

Issue 245923008: Optimize GLES2DecoderImpl::ApplyDirtyState. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase on refactored gles2_cmd_decoder_unittest.cc Created 6 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "gpu/command_buffer/common/gles2_cmd_format.h" 9 #include "gpu/command_buffer/common/gles2_cmd_format.h"
10 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 10 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 using ::testing::SetArgumentPointee; 47 using ::testing::SetArgumentPointee;
48 using ::testing::SetArgPointee; 48 using ::testing::SetArgPointee;
49 using ::testing::StrEq; 49 using ::testing::StrEq;
50 using ::testing::StrictMock; 50 using ::testing::StrictMock;
51 51
52 namespace gpu { 52 namespace gpu {
53 namespace gles2 { 53 namespace gles2 {
54 54
55 using namespace cmds; 55 using namespace cmds;
56 56
57 class GLES2DecoderTestWithExtensionsOnGLES2 57 class GLES2DecoderTestWithExtensionsOnGLES2 : public GLES2DecoderTest {
58 : public GLES2DecoderTest,
59 public ::testing::WithParamInterface<const char*> {
60 public: 58 public:
61 GLES2DecoderTestWithExtensionsOnGLES2() {} 59 GLES2DecoderTestWithExtensionsOnGLES2() {}
62 60
63 virtual void SetUp() { 61 virtual void SetUp() {}
62 void Init(const char* extensions) {
64 InitState init; 63 InitState init;
65 init.extensions = GetParam(); 64 init.extensions = extensions;
66 init.gl_version = "opengl es 2.0"; 65 init.gl_version = "opengl es 2.0";
67 init.has_alpha = true; 66 init.has_alpha = true;
68 init.has_depth = true; 67 init.has_depth = true;
69 init.request_alpha = true; 68 init.request_alpha = true;
70 init.request_depth = true; 69 init.request_depth = true;
71 InitDecoder(init); 70 InitDecoder(init);
72 } 71 }
73 }; 72 };
74 73
75 TEST_F(GLES2DecoderTest, CheckFramebufferStatusWithNoBoundTarget) { 74 TEST_P(GLES2DecoderTest, CheckFramebufferStatusWithNoBoundTarget) {
76 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_)).Times(0); 75 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_)).Times(0);
77 CheckFramebufferStatus::Result* result = 76 CheckFramebufferStatus::Result* result =
78 static_cast<CheckFramebufferStatus::Result*>(shared_memory_address_); 77 static_cast<CheckFramebufferStatus::Result*>(shared_memory_address_);
79 *result = 0; 78 *result = 0;
80 CheckFramebufferStatus cmd; 79 CheckFramebufferStatus cmd;
81 cmd.Init(GL_FRAMEBUFFER, shared_memory_id_, shared_memory_offset_); 80 cmd.Init(GL_FRAMEBUFFER, shared_memory_id_, shared_memory_offset_);
82 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 81 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
83 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), *result); 82 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), *result);
84 } 83 }
85 84
86 TEST_F(GLES2DecoderWithShaderTest, BindAndDeleteFramebuffer) { 85 TEST_P(GLES2DecoderWithShaderTest, BindAndDeleteFramebuffer) {
87 SetupTexture(); 86 SetupTexture();
88 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); 87 AddExpectationsForSimulatedAttrib0(kNumVertices, 0);
89 SetupExpectationsForApplyingDefaultDirtyState(); 88 SetupExpectationsForApplyingDefaultDirtyState();
90 DoBindFramebuffer( 89 DoBindFramebuffer(
91 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 90 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
92 DoDeleteFramebuffer(client_framebuffer_id_, 91 DoDeleteFramebuffer(client_framebuffer_id_,
93 kServiceFramebufferId, 92 kServiceFramebufferId,
94 true, 93 true,
95 GL_FRAMEBUFFER, 94 GL_FRAMEBUFFER,
96 0, 95 0,
97 true, 96 true,
98 GL_FRAMEBUFFER, 97 GL_FRAMEBUFFER,
99 0); 98 0);
100 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) 99 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices))
101 .Times(1) 100 .Times(1)
102 .RetiresOnSaturation(); 101 .RetiresOnSaturation();
103 DrawArrays cmd; 102 DrawArrays cmd;
104 cmd.Init(GL_TRIANGLES, 0, kNumVertices); 103 cmd.Init(GL_TRIANGLES, 0, kNumVertices);
105 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 104 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
106 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 105 EXPECT_EQ(GL_NO_ERROR, GetGLError());
107 } 106 }
108 107
109 TEST_F(GLES2DecoderTest, FramebufferRenderbufferWithNoBoundTarget) { 108 TEST_P(GLES2DecoderTest, FramebufferRenderbufferWithNoBoundTarget) {
110 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0); 109 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0);
111 FramebufferRenderbuffer cmd; 110 FramebufferRenderbuffer cmd;
112 cmd.Init(GL_FRAMEBUFFER, 111 cmd.Init(GL_FRAMEBUFFER,
113 GL_COLOR_ATTACHMENT0, 112 GL_COLOR_ATTACHMENT0,
114 GL_RENDERBUFFER, 113 GL_RENDERBUFFER,
115 client_renderbuffer_id_); 114 client_renderbuffer_id_);
116 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 115 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
117 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 116 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
118 } 117 }
119 118
120 TEST_F(GLES2DecoderTest, FramebufferTexture2DWithNoBoundTarget) { 119 TEST_P(GLES2DecoderTest, FramebufferTexture2DWithNoBoundTarget) {
121 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0); 120 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0);
122 FramebufferTexture2D cmd; 121 FramebufferTexture2D cmd;
123 cmd.Init(GL_FRAMEBUFFER, 122 cmd.Init(GL_FRAMEBUFFER,
124 GL_COLOR_ATTACHMENT0, 123 GL_COLOR_ATTACHMENT0,
125 GL_TEXTURE_2D, 124 GL_TEXTURE_2D,
126 client_texture_id_, 125 client_texture_id_,
127 0); 126 0);
128 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 127 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
129 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 128 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
130 } 129 }
131 130
132 TEST_F(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithNoBoundTarget) { 131 TEST_P(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithNoBoundTarget) {
133 EXPECT_CALL(*gl_, GetError()) 132 EXPECT_CALL(*gl_, GetError())
134 .WillOnce(Return(GL_NO_ERROR)) 133 .WillOnce(Return(GL_NO_ERROR))
135 .WillOnce(Return(GL_NO_ERROR)) 134 .WillOnce(Return(GL_NO_ERROR))
136 .RetiresOnSaturation(); 135 .RetiresOnSaturation();
137 EXPECT_CALL(*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)) 136 EXPECT_CALL(*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _))
138 .Times(0); 137 .Times(0);
139 GetFramebufferAttachmentParameteriv cmd; 138 GetFramebufferAttachmentParameteriv cmd;
140 cmd.Init(GL_FRAMEBUFFER, 139 cmd.Init(GL_FRAMEBUFFER,
141 GL_COLOR_ATTACHMENT0, 140 GL_COLOR_ATTACHMENT0,
142 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, 141 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
143 shared_memory_id_, 142 shared_memory_id_,
144 shared_memory_offset_); 143 shared_memory_offset_);
145 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 144 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
146 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 145 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
147 } 146 }
148 147
149 TEST_F(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithRenderbuffer) { 148 TEST_P(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithRenderbuffer) {
150 DoBindFramebuffer( 149 DoBindFramebuffer(
151 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 150 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
152 EXPECT_CALL(*gl_, GetError()) 151 EXPECT_CALL(*gl_, GetError())
153 .WillOnce(Return(GL_NO_ERROR)) 152 .WillOnce(Return(GL_NO_ERROR))
154 .RetiresOnSaturation(); 153 .RetiresOnSaturation();
155 EXPECT_CALL(*gl_, 154 EXPECT_CALL(*gl_,
156 FramebufferRenderbufferEXT(GL_FRAMEBUFFER, 155 FramebufferRenderbufferEXT(GL_FRAMEBUFFER,
157 GL_COLOR_ATTACHMENT0, 156 GL_COLOR_ATTACHMENT0,
158 GL_RENDERBUFFER, 157 GL_RENDERBUFFER,
159 kServiceRenderbufferId)) 158 kServiceRenderbufferId))
(...skipping 21 matching lines...) Expand all
181 GL_COLOR_ATTACHMENT0, 180 GL_COLOR_ATTACHMENT0,
182 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, 181 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME,
183 shared_memory_id_, 182 shared_memory_id_,
184 shared_memory_offset_); 183 shared_memory_offset_);
185 EXPECT_EQ(error::kNoError, ExecuteCmd(fbrb_cmd)); 184 EXPECT_EQ(error::kNoError, ExecuteCmd(fbrb_cmd));
186 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 185 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
187 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 186 EXPECT_EQ(GL_NO_ERROR, GetGLError());
188 EXPECT_EQ(static_cast<GLuint>(*result_value), client_renderbuffer_id_); 187 EXPECT_EQ(static_cast<GLuint>(*result_value), client_renderbuffer_id_);
189 } 188 }
190 189
191 TEST_F(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithTexture) { 190 TEST_P(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithTexture) {
192 DoBindFramebuffer( 191 DoBindFramebuffer(
193 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 192 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
194 EXPECT_CALL(*gl_, GetError()) 193 EXPECT_CALL(*gl_, GetError())
195 .WillOnce(Return(GL_NO_ERROR)) 194 .WillOnce(Return(GL_NO_ERROR))
196 .RetiresOnSaturation(); 195 .RetiresOnSaturation();
197 EXPECT_CALL(*gl_, 196 EXPECT_CALL(*gl_,
198 FramebufferTexture2DEXT(GL_FRAMEBUFFER, 197 FramebufferTexture2DEXT(GL_FRAMEBUFFER,
199 GL_COLOR_ATTACHMENT0, 198 GL_COLOR_ATTACHMENT0,
200 GL_TEXTURE_2D, 199 GL_TEXTURE_2D,
201 kServiceTextureId, 200 kServiceTextureId,
(...skipping 23 matching lines...) Expand all
225 GL_COLOR_ATTACHMENT0, 224 GL_COLOR_ATTACHMENT0,
226 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, 225 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME,
227 shared_memory_id_, 226 shared_memory_id_,
228 shared_memory_offset_); 227 shared_memory_offset_);
229 EXPECT_EQ(error::kNoError, ExecuteCmd(fbtex_cmd)); 228 EXPECT_EQ(error::kNoError, ExecuteCmd(fbtex_cmd));
230 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 229 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
231 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 230 EXPECT_EQ(GL_NO_ERROR, GetGLError());
232 EXPECT_EQ(static_cast<GLuint>(*result_value), client_texture_id_); 231 EXPECT_EQ(static_cast<GLuint>(*result_value), client_texture_id_);
233 } 232 }
234 233
235 TEST_F(GLES2DecoderTest, GetRenderbufferParameterivWithNoBoundTarget) { 234 TEST_P(GLES2DecoderTest, GetRenderbufferParameterivWithNoBoundTarget) {
236 EXPECT_CALL(*gl_, GetError()) 235 EXPECT_CALL(*gl_, GetError())
237 .WillOnce(Return(GL_NO_ERROR)) 236 .WillOnce(Return(GL_NO_ERROR))
238 .WillOnce(Return(GL_NO_ERROR)) 237 .WillOnce(Return(GL_NO_ERROR))
239 .RetiresOnSaturation(); 238 .RetiresOnSaturation();
240 EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)).Times(0); 239 EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)).Times(0);
241 GetRenderbufferParameteriv cmd; 240 GetRenderbufferParameteriv cmd;
242 cmd.Init(GL_RENDERBUFFER, 241 cmd.Init(GL_RENDERBUFFER,
243 GL_RENDERBUFFER_WIDTH, 242 GL_RENDERBUFFER_WIDTH,
244 shared_memory_id_, 243 shared_memory_id_,
245 shared_memory_offset_); 244 shared_memory_offset_);
246 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 245 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
247 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 246 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
248 } 247 }
249 248
250 TEST_F(GLES2DecoderTest, RenderbufferStorageWithNoBoundTarget) { 249 TEST_P(GLES2DecoderTest, RenderbufferStorageWithNoBoundTarget) {
251 EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)).Times(0); 250 EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)).Times(0);
252 RenderbufferStorage cmd; 251 RenderbufferStorage cmd;
253 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, 4); 252 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, 4);
254 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 253 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
255 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 254 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
256 } 255 }
257 256
258 namespace { 257 namespace {
259 258
260 // A class to emulate glReadPixels 259 // A class to emulate glReadPixels
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 // check padding 467 // check padding
469 if (yy != in_read_height - 1) { 468 if (yy != in_read_height - 1) {
470 GLint num_padding_bytes = 469 GLint num_padding_bytes =
471 (kPackAlignment - 1) - (unpadded_row_size % kPackAlignment); 470 (kPackAlignment - 1) - (unpadded_row_size % kPackAlignment);
472 EXPECT_EQ(0, 471 EXPECT_EQ(0,
473 memcmp(pack.get(), row + unpadded_row_size, num_padding_bytes)); 472 memcmp(pack.get(), row + unpadded_row_size, num_padding_bytes));
474 } 473 }
475 } 474 }
476 } 475 }
477 476
478 TEST_F(GLES2DecoderTest, ReadPixels) { 477 TEST_P(GLES2DecoderTest, ReadPixels) {
479 const GLsizei kWidth = 5; 478 const GLsizei kWidth = 5;
480 const GLsizei kHeight = 3; 479 const GLsizei kHeight = 3;
481 const GLint kBytesPerPixel = 3; 480 const GLint kBytesPerPixel = 3;
482 const GLint kPackAlignment = 4; 481 const GLint kPackAlignment = 4;
483 static const int8 kSrcPixels[kWidth * kHeight * kBytesPerPixel] = { 482 static const int8 kSrcPixels[kWidth * kHeight * kBytesPerPixel] = {
484 12, 13, 14, 18, 19, 18, 19, 12, 13, 14, 18, 19, 18, 19, 13, 483 12, 13, 14, 18, 19, 18, 19, 12, 13, 14, 18, 19, 18, 19, 13,
485 29, 28, 23, 22, 21, 22, 21, 29, 28, 23, 22, 21, 22, 21, 28, 484 29, 28, 23, 22, 21, 22, 21, 29, 28, 23, 22, 21, 22, 21, 28,
486 31, 34, 39, 37, 32, 37, 32, 31, 34, 39, 37, 32, 37, 32, 34, 485 31, 34, 39, 37, 32, 37, 32, 31, 34, 39, 37, 32, 37, 32, 34,
487 }; 486 };
488 487
(...skipping 27 matching lines...) Expand all
516 result_shm_id, 515 result_shm_id,
517 result_shm_offset, 516 result_shm_offset,
518 false); 517 false);
519 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 518 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
520 for (GLint yy = 0; yy < kHeight; ++yy) { 519 for (GLint yy = 0; yy < kHeight; ++yy) {
521 EXPECT_TRUE(emu.CompareRowSegment( 520 EXPECT_TRUE(emu.CompareRowSegment(
522 0, yy, kWidth, emu.ComputePackAlignmentAddress(0, yy, kWidth, dest))); 521 0, yy, kWidth, emu.ComputePackAlignmentAddress(0, yy, kWidth, dest)));
523 } 522 }
524 } 523 }
525 524
526 TEST_F(GLES2DecoderRGBBackbufferTest, ReadPixelsNoAlphaBackbuffer) { 525 TEST_P(GLES2DecoderRGBBackbufferTest, ReadPixelsNoAlphaBackbuffer) {
527 const GLsizei kWidth = 3; 526 const GLsizei kWidth = 3;
528 const GLsizei kHeight = 3; 527 const GLsizei kHeight = 3;
529 const GLint kBytesPerPixel = 4; 528 const GLint kBytesPerPixel = 4;
530 const GLint kPackAlignment = 4; 529 const GLint kPackAlignment = 4;
531 static const uint8 kExpectedPixels[kWidth * kHeight * kBytesPerPixel] = { 530 static const uint8 kExpectedPixels[kWidth * kHeight * kBytesPerPixel] = {
532 12, 13, 14, 255, 19, 18, 19, 255, 13, 14, 18, 255, 531 12, 13, 14, 255, 19, 18, 19, 255, 13, 14, 18, 255,
533 29, 28, 23, 255, 21, 22, 21, 255, 28, 23, 22, 255, 532 29, 28, 23, 255, 21, 22, 21, 255, 28, 23, 22, 255,
534 31, 34, 39, 255, 32, 37, 32, 255, 34, 39, 37, 255, 533 31, 34, 39, 255, 32, 37, 32, 255, 34, 39, 37, 255,
535 }; 534 };
536 static const uint8 kSrcPixels[kWidth * kHeight * kBytesPerPixel] = { 535 static const uint8 kSrcPixels[kWidth * kHeight * kBytesPerPixel] = {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 result_shm_id, 571 result_shm_id,
573 result_shm_offset, 572 result_shm_offset,
574 false); 573 false);
575 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 574 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
576 for (GLint yy = 0; yy < kHeight; ++yy) { 575 for (GLint yy = 0; yy < kHeight; ++yy) {
577 EXPECT_TRUE(emu.CompareRowSegment( 576 EXPECT_TRUE(emu.CompareRowSegment(
578 0, yy, kWidth, emu.ComputePackAlignmentAddress(0, yy, kWidth, dest))); 577 0, yy, kWidth, emu.ComputePackAlignmentAddress(0, yy, kWidth, dest)));
579 } 578 }
580 } 579 }
581 580
582 TEST_F(GLES2DecoderTest, ReadPixelsOutOfRange) { 581 TEST_P(GLES2DecoderTest, ReadPixelsOutOfRange) {
583 static GLint tests[][4] = { 582 static GLint tests[][4] = {
584 { 583 {
585 -2, -1, 9, 5, 584 -2, -1, 9, 5,
586 }, // out of range on all sides 585 }, // out of range on all sides
587 { 586 {
588 2, 1, 9, 5, 587 2, 1, 9, 5,
589 }, // out of range on right, bottom 588 }, // out of range on right, bottom
590 { 589 {
591 -7, -4, 9, 5, 590 -7, -4, 9, 5,
592 }, // out of range on left, top 591 }, // out of range on left, top
(...skipping 10 matching lines...) Expand all
603 5, 0, 9, 5, 602 5, 0, 9, 5,
604 }, // completely off right 603 }, // completely off right
605 }; 604 };
606 605
607 for (size_t tt = 0; tt < arraysize(tests); ++tt) { 606 for (size_t tt = 0; tt < arraysize(tests); ++tt) {
608 CheckReadPixelsOutOfRange( 607 CheckReadPixelsOutOfRange(
609 tests[tt][0], tests[tt][1], tests[tt][2], tests[tt][3], tt == 0); 608 tests[tt][0], tests[tt][1], tests[tt][2], tests[tt][3], tt == 0);
610 } 609 }
611 } 610 }
612 611
613 TEST_F(GLES2DecoderTest, ReadPixelsInvalidArgs) { 612 TEST_P(GLES2DecoderTest, ReadPixelsInvalidArgs) {
614 typedef ReadPixels::Result Result; 613 typedef ReadPixels::Result Result;
615 Result* result = GetSharedMemoryAs<Result*>(); 614 Result* result = GetSharedMemoryAs<Result*>();
616 uint32 result_shm_id = kSharedMemoryId; 615 uint32 result_shm_id = kSharedMemoryId;
617 uint32 result_shm_offset = kSharedMemoryOffset; 616 uint32 result_shm_offset = kSharedMemoryOffset;
618 uint32 pixels_shm_id = kSharedMemoryId; 617 uint32 pixels_shm_id = kSharedMemoryId;
619 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(*result); 618 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(*result);
620 EXPECT_CALL(*gl_, ReadPixels(_, _, _, _, _, _, _)).Times(0); 619 EXPECT_CALL(*gl_, ReadPixels(_, _, _, _, _, _, _)).Times(0);
621 ReadPixels cmd; 620 ReadPixels cmd;
622 cmd.Init(0, 621 cmd.Init(0,
623 0, 622 0,
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 GL_RGB, 700 GL_RGB,
702 GL_UNSIGNED_BYTE, 701 GL_UNSIGNED_BYTE,
703 pixels_shm_id, 702 pixels_shm_id,
704 pixels_shm_offset, 703 pixels_shm_offset,
705 result_shm_id, 704 result_shm_id,
706 kInvalidSharedMemoryOffset, 705 kInvalidSharedMemoryOffset,
707 false); 706 false);
708 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 707 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
709 } 708 }
710 709
711 TEST_F(GLES2DecoderManualInitTest, ReadPixelsAsyncError) { 710 TEST_P(GLES2DecoderManualInitTest, ReadPixelsAsyncError) {
712 InitState init; 711 InitState init;
713 init.extensions = "GL_ARB_sync"; 712 init.extensions = "GL_ARB_sync";
714 init.gl_version = "opengl es 3.0"; 713 init.gl_version = "opengl es 3.0";
715 init.has_alpha = true; 714 init.has_alpha = true;
716 init.request_alpha = true; 715 init.request_alpha = true;
717 init.bind_generates_resource = true; 716 init.bind_generates_resource = true;
718 InitDecoder(init); 717 InitDecoder(init);
719 718
720 typedef ReadPixels::Result Result; 719 typedef ReadPixels::Result Result;
721 Result* result = GetSharedMemoryAs<Result*>(); 720 Result* result = GetSharedMemoryAs<Result*>();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 pixels_shm_id, 754 pixels_shm_id,
756 pixels_shm_offset, 755 pixels_shm_offset,
757 result_shm_id, 756 result_shm_id,
758 result_shm_offset, 757 result_shm_offset,
759 true); 758 true);
760 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 759 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
761 } 760 }
762 761
763 // Check that if a renderbuffer is attached and GL returns 762 // Check that if a renderbuffer is attached and GL returns
764 // GL_FRAMEBUFFER_COMPLETE that the buffer is cleared and state is restored. 763 // GL_FRAMEBUFFER_COMPLETE that the buffer is cleared and state is restored.
765 TEST_F(GLES2DecoderTest, FramebufferRenderbufferClearColor) { 764 TEST_P(GLES2DecoderTest, FramebufferRenderbufferClearColor) {
766 DoBindFramebuffer( 765 DoBindFramebuffer(
767 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 766 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
768 ClearColor color_cmd; 767 ClearColor color_cmd;
769 ColorMask color_mask_cmd; 768 ColorMask color_mask_cmd;
770 Enable enable_cmd; 769 Enable enable_cmd;
771 FramebufferRenderbuffer cmd; 770 FramebufferRenderbuffer cmd;
772 color_cmd.Init(0.1f, 0.2f, 0.3f, 0.4f); 771 color_cmd.Init(0.1f, 0.2f, 0.3f, 0.4f);
773 color_mask_cmd.Init(0, 1, 0, 1); 772 color_mask_cmd.Init(0, 1, 0, 1);
774 enable_cmd.Init(GL_SCISSOR_TEST); 773 enable_cmd.Init(GL_SCISSOR_TEST);
775 cmd.Init(GL_FRAMEBUFFER, 774 cmd.Init(GL_FRAMEBUFFER,
776 GL_COLOR_ATTACHMENT0, 775 GL_COLOR_ATTACHMENT0,
777 GL_RENDERBUFFER, 776 GL_RENDERBUFFER,
778 client_renderbuffer_id_); 777 client_renderbuffer_id_);
779 InSequence sequence; 778 InSequence sequence;
780 EXPECT_CALL(*gl_, ClearColor(0.1f, 0.2f, 0.3f, 0.4f)) 779 EXPECT_CALL(*gl_, ClearColor(0.1f, 0.2f, 0.3f, 0.4f))
781 .Times(1) 780 .Times(1)
782 .RetiresOnSaturation(); 781 .RetiresOnSaturation();
782 SetupExpectationsForEnableDisable(GL_SCISSOR_TEST, true);
783 EXPECT_CALL(*gl_, GetError()) 783 EXPECT_CALL(*gl_, GetError())
784 .WillOnce(Return(GL_NO_ERROR)) 784 .WillOnce(Return(GL_NO_ERROR))
785 .RetiresOnSaturation(); 785 .RetiresOnSaturation();
786 EXPECT_CALL(*gl_, 786 EXPECT_CALL(*gl_,
787 FramebufferRenderbufferEXT(GL_FRAMEBUFFER, 787 FramebufferRenderbufferEXT(GL_FRAMEBUFFER,
788 GL_COLOR_ATTACHMENT0, 788 GL_COLOR_ATTACHMENT0,
789 GL_RENDERBUFFER, 789 GL_RENDERBUFFER,
790 kServiceRenderbufferId)) 790 kServiceRenderbufferId))
791 .Times(1) 791 .Times(1)
792 .RetiresOnSaturation(); 792 .RetiresOnSaturation();
793 EXPECT_CALL(*gl_, GetError()) 793 EXPECT_CALL(*gl_, GetError())
794 .WillOnce(Return(GL_NO_ERROR)) 794 .WillOnce(Return(GL_NO_ERROR))
795 .RetiresOnSaturation(); 795 .RetiresOnSaturation();
796 EXPECT_EQ(error::kNoError, ExecuteCmd(color_cmd)); 796 EXPECT_EQ(error::kNoError, ExecuteCmd(color_cmd));
797 EXPECT_EQ(error::kNoError, ExecuteCmd(color_mask_cmd)); 797 EXPECT_EQ(error::kNoError, ExecuteCmd(color_mask_cmd));
798 EXPECT_EQ(error::kNoError, ExecuteCmd(enable_cmd)); 798 EXPECT_EQ(error::kNoError, ExecuteCmd(enable_cmd));
799 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 799 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
800 } 800 }
801 801
802 TEST_F(GLES2DecoderTest, FramebufferRenderbufferClearDepth) { 802 TEST_P(GLES2DecoderTest, FramebufferRenderbufferClearDepth) {
803 DoBindFramebuffer( 803 DoBindFramebuffer(
804 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 804 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
805 ClearDepthf depth_cmd; 805 ClearDepthf depth_cmd;
806 DepthMask depth_mask_cmd; 806 DepthMask depth_mask_cmd;
807 FramebufferRenderbuffer cmd; 807 FramebufferRenderbuffer cmd;
808 depth_cmd.Init(0.5f); 808 depth_cmd.Init(0.5f);
809 depth_mask_cmd.Init(false); 809 depth_mask_cmd.Init(false);
810 cmd.Init(GL_FRAMEBUFFER, 810 cmd.Init(GL_FRAMEBUFFER,
811 GL_DEPTH_ATTACHMENT, 811 GL_DEPTH_ATTACHMENT,
812 GL_RENDERBUFFER, 812 GL_RENDERBUFFER,
(...skipping 11 matching lines...) Expand all
824 .Times(1) 824 .Times(1)
825 .RetiresOnSaturation(); 825 .RetiresOnSaturation();
826 EXPECT_CALL(*gl_, GetError()) 826 EXPECT_CALL(*gl_, GetError())
827 .WillOnce(Return(GL_NO_ERROR)) 827 .WillOnce(Return(GL_NO_ERROR))
828 .RetiresOnSaturation(); 828 .RetiresOnSaturation();
829 EXPECT_EQ(error::kNoError, ExecuteCmd(depth_cmd)); 829 EXPECT_EQ(error::kNoError, ExecuteCmd(depth_cmd));
830 EXPECT_EQ(error::kNoError, ExecuteCmd(depth_mask_cmd)); 830 EXPECT_EQ(error::kNoError, ExecuteCmd(depth_mask_cmd));
831 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 831 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
832 } 832 }
833 833
834 TEST_F(GLES2DecoderTest, FramebufferRenderbufferClearStencil) { 834 TEST_P(GLES2DecoderTest, FramebufferRenderbufferClearStencil) {
835 DoBindFramebuffer( 835 DoBindFramebuffer(
836 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 836 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
837 ClearStencil stencil_cmd; 837 ClearStencil stencil_cmd;
838 StencilMaskSeparate stencil_mask_separate_cmd; 838 StencilMaskSeparate stencil_mask_separate_cmd;
839 FramebufferRenderbuffer cmd; 839 FramebufferRenderbuffer cmd;
840 stencil_cmd.Init(123); 840 stencil_cmd.Init(123);
841 stencil_mask_separate_cmd.Init(GL_BACK, 0x1234u); 841 stencil_mask_separate_cmd.Init(GL_BACK, 0x1234u);
842 cmd.Init(GL_FRAMEBUFFER, 842 cmd.Init(GL_FRAMEBUFFER,
843 GL_STENCIL_ATTACHMENT, 843 GL_STENCIL_ATTACHMENT,
844 GL_RENDERBUFFER, 844 GL_RENDERBUFFER,
(...skipping 12 matching lines...) Expand all
857 .RetiresOnSaturation(); 857 .RetiresOnSaturation();
858 EXPECT_CALL(*gl_, GetError()) 858 EXPECT_CALL(*gl_, GetError())
859 .WillOnce(Return(GL_NO_ERROR)) 859 .WillOnce(Return(GL_NO_ERROR))
860 .RetiresOnSaturation(); 860 .RetiresOnSaturation();
861 EXPECT_EQ(error::kNoError, ExecuteCmd(stencil_cmd)); 861 EXPECT_EQ(error::kNoError, ExecuteCmd(stencil_cmd));
862 EXPECT_EQ(error::kNoError, ExecuteCmd(stencil_mask_separate_cmd)); 862 EXPECT_EQ(error::kNoError, ExecuteCmd(stencil_mask_separate_cmd));
863 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 863 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
864 } 864 }
865 865
866 #if 0 // Turn this test on once we allow GL_DEPTH_STENCIL_ATTACHMENT 866 #if 0 // Turn this test on once we allow GL_DEPTH_STENCIL_ATTACHMENT
867 TEST_F(GLES2DecoderTest, FramebufferRenderbufferClearDepthStencil) { 867 TEST_P(GLES2DecoderTest, FramebufferRenderbufferClearDepthStencil) {
868 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, 868 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_,
869 kServiceFramebufferId); 869 kServiceFramebufferId);
870 ClearDepthf depth_cmd; 870 ClearDepthf depth_cmd;
871 ClearStencil stencil_cmd; 871 ClearStencil stencil_cmd;
872 FramebufferRenderbuffer cmd; 872 FramebufferRenderbuffer cmd;
873 depth_cmd.Init(0.5f); 873 depth_cmd.Init(0.5f);
874 stencil_cmd.Init(123); 874 stencil_cmd.Init(123);
875 cmd.Init( 875 cmd.Init(
876 GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, 876 GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER,
877 client_renderbuffer_id_); 877 client_renderbuffer_id_);
878 InSequence sequence; 878 InSequence sequence;
879 EXPECT_CALL(*gl_, ClearDepth(0.5f)) 879 EXPECT_CALL(*gl_, ClearDepth(0.5f))
880 .Times(1) 880 .Times(1)
881 .RetiresOnSaturation(); 881 .RetiresOnSaturation();
882 EXPECT_CALL(*gl_, ClearStencil(123)) 882 EXPECT_CALL(*gl_, ClearStencil(123))
883 .Times(1) 883 .Times(1)
884 .RetiresOnSaturation(); 884 .RetiresOnSaturation();
885 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT( 885 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(
886 GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, 886 GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER,
887 kServiceRenderbufferId)) 887 kServiceRenderbufferId))
888 .Times(1) 888 .Times(1)
889 .RetiresOnSaturation(); 889 .RetiresOnSaturation();
890 EXPECT_EQ(error::kNoError, ExecuteCmd(depth_cmd)); 890 EXPECT_EQ(error::kNoError, ExecuteCmd(depth_cmd));
891 EXPECT_EQ(error::kNoError, ExecuteCmd(stencil_cmd)); 891 EXPECT_EQ(error::kNoError, ExecuteCmd(stencil_cmd));
892 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 892 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
893 } 893 }
894 #endif 894 #endif
895 895
896 TEST_F(GLES2DecoderManualInitTest, ActualAlphaMatchesRequestedAlpha) { 896 TEST_P(GLES2DecoderManualInitTest, ActualAlphaMatchesRequestedAlpha) {
897 InitState init; 897 InitState init;
898 init.gl_version = "3.0"; 898 init.gl_version = "3.0";
899 init.has_alpha = true; 899 init.has_alpha = true;
900 init.request_alpha = true; 900 init.request_alpha = true;
901 init.bind_generates_resource = true; 901 init.bind_generates_resource = true;
902 InitDecoder(init); 902 InitDecoder(init);
903 903
904 EXPECT_CALL(*gl_, GetError()) 904 EXPECT_CALL(*gl_, GetError())
905 .WillOnce(Return(GL_NO_ERROR)) 905 .WillOnce(Return(GL_NO_ERROR))
906 .WillOnce(Return(GL_NO_ERROR)) 906 .WillOnce(Return(GL_NO_ERROR))
907 .RetiresOnSaturation(); 907 .RetiresOnSaturation();
908 typedef GetIntegerv::Result Result; 908 typedef GetIntegerv::Result Result;
909 Result* result = static_cast<Result*>(shared_memory_address_); 909 Result* result = static_cast<Result*>(shared_memory_address_);
910 EXPECT_CALL(*gl_, GetIntegerv(GL_ALPHA_BITS, _)) 910 EXPECT_CALL(*gl_, GetIntegerv(GL_ALPHA_BITS, _))
911 .WillOnce(SetArgumentPointee<1>(8)) 911 .WillOnce(SetArgumentPointee<1>(8))
912 .RetiresOnSaturation(); 912 .RetiresOnSaturation();
913 result->size = 0; 913 result->size = 0;
914 GetIntegerv cmd2; 914 GetIntegerv cmd2;
915 cmd2.Init(GL_ALPHA_BITS, shared_memory_id_, shared_memory_offset_); 915 cmd2.Init(GL_ALPHA_BITS, shared_memory_id_, shared_memory_offset_);
916 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); 916 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
917 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ALPHA_BITS), 917 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ALPHA_BITS),
918 result->GetNumResults()); 918 result->GetNumResults());
919 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 919 EXPECT_EQ(GL_NO_ERROR, GetGLError());
920 EXPECT_EQ(8, result->GetData()[0]); 920 EXPECT_EQ(8, result->GetData()[0]);
921 } 921 }
922 922
923 TEST_F(GLES2DecoderManualInitTest, ActualAlphaDoesNotMatchRequestedAlpha) { 923 TEST_P(GLES2DecoderManualInitTest, ActualAlphaDoesNotMatchRequestedAlpha) {
924 InitState init; 924 InitState init;
925 init.gl_version = "3.0"; 925 init.gl_version = "3.0";
926 init.has_alpha = true; 926 init.has_alpha = true;
927 init.bind_generates_resource = true; 927 init.bind_generates_resource = true;
928 InitDecoder(init); 928 InitDecoder(init);
929 929
930 EXPECT_CALL(*gl_, GetError()) 930 EXPECT_CALL(*gl_, GetError())
931 .WillOnce(Return(GL_NO_ERROR)) 931 .WillOnce(Return(GL_NO_ERROR))
932 .WillOnce(Return(GL_NO_ERROR)) 932 .WillOnce(Return(GL_NO_ERROR))
933 .RetiresOnSaturation(); 933 .RetiresOnSaturation();
934 typedef GetIntegerv::Result Result; 934 typedef GetIntegerv::Result Result;
935 Result* result = static_cast<Result*>(shared_memory_address_); 935 Result* result = static_cast<Result*>(shared_memory_address_);
936 EXPECT_CALL(*gl_, GetIntegerv(GL_ALPHA_BITS, _)) 936 EXPECT_CALL(*gl_, GetIntegerv(GL_ALPHA_BITS, _))
937 .WillOnce(SetArgumentPointee<1>(8)) 937 .WillOnce(SetArgumentPointee<1>(8))
938 .RetiresOnSaturation(); 938 .RetiresOnSaturation();
939 result->size = 0; 939 result->size = 0;
940 GetIntegerv cmd2; 940 GetIntegerv cmd2;
941 cmd2.Init(GL_ALPHA_BITS, shared_memory_id_, shared_memory_offset_); 941 cmd2.Init(GL_ALPHA_BITS, shared_memory_id_, shared_memory_offset_);
942 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); 942 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
943 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ALPHA_BITS), 943 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ALPHA_BITS),
944 result->GetNumResults()); 944 result->GetNumResults());
945 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 945 EXPECT_EQ(GL_NO_ERROR, GetGLError());
946 EXPECT_EQ(0, result->GetData()[0]); 946 EXPECT_EQ(0, result->GetData()[0]);
947 } 947 }
948 948
949 TEST_F(GLES2DecoderManualInitTest, ActualDepthMatchesRequestedDepth) { 949 TEST_P(GLES2DecoderManualInitTest, ActualDepthMatchesRequestedDepth) {
950 InitState init; 950 InitState init;
951 init.gl_version = "3.0"; 951 init.gl_version = "3.0";
952 init.has_depth = true; 952 init.has_depth = true;
953 init.request_depth = true; 953 init.request_depth = true;
954 init.bind_generates_resource = true; 954 init.bind_generates_resource = true;
955 InitDecoder(init); 955 InitDecoder(init);
956 956
957 EXPECT_CALL(*gl_, GetError()) 957 EXPECT_CALL(*gl_, GetError())
958 .WillOnce(Return(GL_NO_ERROR)) 958 .WillOnce(Return(GL_NO_ERROR))
959 .WillOnce(Return(GL_NO_ERROR)) 959 .WillOnce(Return(GL_NO_ERROR))
960 .RetiresOnSaturation(); 960 .RetiresOnSaturation();
961 typedef GetIntegerv::Result Result; 961 typedef GetIntegerv::Result Result;
962 Result* result = static_cast<Result*>(shared_memory_address_); 962 Result* result = static_cast<Result*>(shared_memory_address_);
963 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) 963 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _))
964 .WillOnce(SetArgumentPointee<1>(24)) 964 .WillOnce(SetArgumentPointee<1>(24))
965 .RetiresOnSaturation(); 965 .RetiresOnSaturation();
966 result->size = 0; 966 result->size = 0;
967 GetIntegerv cmd2; 967 GetIntegerv cmd2;
968 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); 968 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_);
969 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); 969 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
970 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), 970 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS),
971 result->GetNumResults()); 971 result->GetNumResults());
972 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 972 EXPECT_EQ(GL_NO_ERROR, GetGLError());
973 EXPECT_EQ(24, result->GetData()[0]); 973 EXPECT_EQ(24, result->GetData()[0]);
974 } 974 }
975 975
976 TEST_F(GLES2DecoderManualInitTest, ActualDepthDoesNotMatchRequestedDepth) { 976 TEST_P(GLES2DecoderManualInitTest, ActualDepthDoesNotMatchRequestedDepth) {
977 InitState init; 977 InitState init;
978 init.gl_version = "3.0"; 978 init.gl_version = "3.0";
979 init.has_depth = true; 979 init.has_depth = true;
980 init.bind_generates_resource = true; 980 init.bind_generates_resource = true;
981 InitDecoder(init); 981 InitDecoder(init);
982 982
983 EXPECT_CALL(*gl_, GetError()) 983 EXPECT_CALL(*gl_, GetError())
984 .WillOnce(Return(GL_NO_ERROR)) 984 .WillOnce(Return(GL_NO_ERROR))
985 .WillOnce(Return(GL_NO_ERROR)) 985 .WillOnce(Return(GL_NO_ERROR))
986 .RetiresOnSaturation(); 986 .RetiresOnSaturation();
987 typedef GetIntegerv::Result Result; 987 typedef GetIntegerv::Result Result;
988 Result* result = static_cast<Result*>(shared_memory_address_); 988 Result* result = static_cast<Result*>(shared_memory_address_);
989 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) 989 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _))
990 .WillOnce(SetArgumentPointee<1>(24)) 990 .WillOnce(SetArgumentPointee<1>(24))
991 .RetiresOnSaturation(); 991 .RetiresOnSaturation();
992 result->size = 0; 992 result->size = 0;
993 GetIntegerv cmd2; 993 GetIntegerv cmd2;
994 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); 994 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_);
995 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); 995 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
996 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), 996 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS),
997 result->GetNumResults()); 997 result->GetNumResults());
998 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 998 EXPECT_EQ(GL_NO_ERROR, GetGLError());
999 EXPECT_EQ(0, result->GetData()[0]); 999 EXPECT_EQ(0, result->GetData()[0]);
1000 } 1000 }
1001 1001
1002 TEST_F(GLES2DecoderManualInitTest, ActualStencilMatchesRequestedStencil) { 1002 TEST_P(GLES2DecoderManualInitTest, ActualStencilMatchesRequestedStencil) {
1003 InitState init; 1003 InitState init;
1004 init.gl_version = "3.0"; 1004 init.gl_version = "3.0";
1005 init.has_stencil = true; 1005 init.has_stencil = true;
1006 init.request_stencil = true; 1006 init.request_stencil = true;
1007 init.bind_generates_resource = true; 1007 init.bind_generates_resource = true;
1008 InitDecoder(init); 1008 InitDecoder(init);
1009 1009
1010 EXPECT_CALL(*gl_, GetError()) 1010 EXPECT_CALL(*gl_, GetError())
1011 .WillOnce(Return(GL_NO_ERROR)) 1011 .WillOnce(Return(GL_NO_ERROR))
1012 .WillOnce(Return(GL_NO_ERROR)) 1012 .WillOnce(Return(GL_NO_ERROR))
1013 .RetiresOnSaturation(); 1013 .RetiresOnSaturation();
1014 typedef GetIntegerv::Result Result; 1014 typedef GetIntegerv::Result Result;
1015 Result* result = static_cast<Result*>(shared_memory_address_); 1015 Result* result = static_cast<Result*>(shared_memory_address_);
1016 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) 1016 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _))
1017 .WillOnce(SetArgumentPointee<1>(8)) 1017 .WillOnce(SetArgumentPointee<1>(8))
1018 .RetiresOnSaturation(); 1018 .RetiresOnSaturation();
1019 result->size = 0; 1019 result->size = 0;
1020 GetIntegerv cmd2; 1020 GetIntegerv cmd2;
1021 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); 1021 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_);
1022 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); 1022 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
1023 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), 1023 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS),
1024 result->GetNumResults()); 1024 result->GetNumResults());
1025 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1025 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1026 EXPECT_EQ(8, result->GetData()[0]); 1026 EXPECT_EQ(8, result->GetData()[0]);
1027 } 1027 }
1028 1028
1029 TEST_F(GLES2DecoderManualInitTest, ActualStencilDoesNotMatchRequestedStencil) { 1029 TEST_P(GLES2DecoderManualInitTest, ActualStencilDoesNotMatchRequestedStencil) {
1030 InitState init; 1030 InitState init;
1031 init.gl_version = "3.0"; 1031 init.gl_version = "3.0";
1032 init.has_stencil = true; 1032 init.has_stencil = true;
1033 init.bind_generates_resource = true; 1033 init.bind_generates_resource = true;
1034 InitDecoder(init); 1034 InitDecoder(init);
1035 1035
1036 EXPECT_CALL(*gl_, GetError()) 1036 EXPECT_CALL(*gl_, GetError())
1037 .WillOnce(Return(GL_NO_ERROR)) 1037 .WillOnce(Return(GL_NO_ERROR))
1038 .WillOnce(Return(GL_NO_ERROR)) 1038 .WillOnce(Return(GL_NO_ERROR))
1039 .RetiresOnSaturation(); 1039 .RetiresOnSaturation();
1040 typedef GetIntegerv::Result Result; 1040 typedef GetIntegerv::Result Result;
1041 Result* result = static_cast<Result*>(shared_memory_address_); 1041 Result* result = static_cast<Result*>(shared_memory_address_);
1042 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) 1042 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _))
1043 .WillOnce(SetArgumentPointee<1>(8)) 1043 .WillOnce(SetArgumentPointee<1>(8))
1044 .RetiresOnSaturation(); 1044 .RetiresOnSaturation();
1045 result->size = 0; 1045 result->size = 0;
1046 GetIntegerv cmd2; 1046 GetIntegerv cmd2;
1047 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); 1047 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_);
1048 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); 1048 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
1049 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), 1049 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS),
1050 result->GetNumResults()); 1050 result->GetNumResults());
1051 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1051 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1052 EXPECT_EQ(0, result->GetData()[0]); 1052 EXPECT_EQ(0, result->GetData()[0]);
1053 } 1053 }
1054 1054
1055 TEST_F(GLES2DecoderManualInitTest, PackedDepthStencilReportsCorrectValues) { 1055 TEST_P(GLES2DecoderManualInitTest, PackedDepthStencilReportsCorrectValues) {
1056 InitState init; 1056 InitState init;
1057 init.extensions = "GL_OES_packed_depth_stencil"; 1057 init.extensions = "GL_OES_packed_depth_stencil";
1058 init.gl_version = "opengl es 2.0"; 1058 init.gl_version = "opengl es 2.0";
1059 init.has_depth = true; 1059 init.has_depth = true;
1060 init.has_stencil = true; 1060 init.has_stencil = true;
1061 init.request_depth = true; 1061 init.request_depth = true;
1062 init.request_stencil = true; 1062 init.request_stencil = true;
1063 init.bind_generates_resource = true; 1063 init.bind_generates_resource = true;
1064 InitDecoder(init); 1064 InitDecoder(init);
1065 1065
(...skipping 21 matching lines...) Expand all
1087 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) 1087 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _))
1088 .WillOnce(SetArgumentPointee<1>(24)) 1088 .WillOnce(SetArgumentPointee<1>(24))
1089 .RetiresOnSaturation(); 1089 .RetiresOnSaturation();
1090 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); 1090 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
1091 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), 1091 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS),
1092 result->GetNumResults()); 1092 result->GetNumResults());
1093 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1093 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1094 EXPECT_EQ(24, result->GetData()[0]); 1094 EXPECT_EQ(24, result->GetData()[0]);
1095 } 1095 }
1096 1096
1097 TEST_F(GLES2DecoderManualInitTest, PackedDepthStencilNoRequestedStencil) { 1097 TEST_P(GLES2DecoderManualInitTest, PackedDepthStencilNoRequestedStencil) {
1098 InitState init; 1098 InitState init;
1099 init.extensions = "GL_OES_packed_depth_stencil"; 1099 init.extensions = "GL_OES_packed_depth_stencil";
1100 init.gl_version = "opengl es 2.0"; 1100 init.gl_version = "opengl es 2.0";
1101 init.has_depth = true; 1101 init.has_depth = true;
1102 init.has_stencil = true; 1102 init.has_stencil = true;
1103 init.request_depth = true; 1103 init.request_depth = true;
1104 init.bind_generates_resource = true; 1104 init.bind_generates_resource = true;
1105 InitDecoder(init); 1105 InitDecoder(init);
1106 1106
1107 EXPECT_CALL(*gl_, GetError()) 1107 EXPECT_CALL(*gl_, GetError())
(...skipping 20 matching lines...) Expand all
1128 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) 1128 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _))
1129 .WillOnce(SetArgumentPointee<1>(24)) 1129 .WillOnce(SetArgumentPointee<1>(24))
1130 .RetiresOnSaturation(); 1130 .RetiresOnSaturation();
1131 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); 1131 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
1132 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), 1132 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS),
1133 result->GetNumResults()); 1133 result->GetNumResults());
1134 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1134 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1135 EXPECT_EQ(24, result->GetData()[0]); 1135 EXPECT_EQ(24, result->GetData()[0]);
1136 } 1136 }
1137 1137
1138 TEST_F(GLES2DecoderManualInitTest, PackedDepthStencilRenderbufferDepth) { 1138 TEST_P(GLES2DecoderManualInitTest, PackedDepthStencilRenderbufferDepth) {
1139 InitState init; 1139 InitState init;
1140 init.extensions = "GL_OES_packed_depth_stencil"; 1140 init.extensions = "GL_OES_packed_depth_stencil";
1141 init.gl_version = "opengl es 2.0"; 1141 init.gl_version = "opengl es 2.0";
1142 init.bind_generates_resource = true; 1142 init.bind_generates_resource = true;
1143 InitDecoder(init); 1143 InitDecoder(init);
1144 DoBindRenderbuffer( 1144 DoBindRenderbuffer(
1145 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); 1145 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
1146 DoBindFramebuffer( 1146 DoBindFramebuffer(
1147 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 1147 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
1148 1148
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1197 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) 1197 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _))
1198 .WillOnce(SetArgumentPointee<1>(24)) 1198 .WillOnce(SetArgumentPointee<1>(24))
1199 .RetiresOnSaturation(); 1199 .RetiresOnSaturation();
1200 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); 1200 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
1201 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), 1201 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS),
1202 result->GetNumResults()); 1202 result->GetNumResults());
1203 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1203 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1204 EXPECT_EQ(24, result->GetData()[0]); 1204 EXPECT_EQ(24, result->GetData()[0]);
1205 } 1205 }
1206 1206
1207 TEST_F(GLES2DecoderManualInitTest, PackedDepthStencilRenderbufferStencil) { 1207 TEST_P(GLES2DecoderManualInitTest, PackedDepthStencilRenderbufferStencil) {
1208 InitState init; 1208 InitState init;
1209 init.extensions = "GL_OES_packed_depth_stencil"; 1209 init.extensions = "GL_OES_packed_depth_stencil";
1210 init.gl_version = "opengl es 2.0"; 1210 init.gl_version = "opengl es 2.0";
1211 init.bind_generates_resource = true; 1211 init.bind_generates_resource = true;
1212 InitDecoder(init); 1212 InitDecoder(init);
1213 DoBindRenderbuffer( 1213 DoBindRenderbuffer(
1214 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); 1214 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
1215 DoBindFramebuffer( 1215 DoBindFramebuffer(
1216 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 1216 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
1217 1217
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1266 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) 1266 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _))
1267 .WillOnce(SetArgumentPointee<1>(24)) 1267 .WillOnce(SetArgumentPointee<1>(24))
1268 .RetiresOnSaturation(); 1268 .RetiresOnSaturation();
1269 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); 1269 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
1270 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), 1270 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS),
1271 result->GetNumResults()); 1271 result->GetNumResults());
1272 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1272 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1273 EXPECT_EQ(0, result->GetData()[0]); 1273 EXPECT_EQ(0, result->GetData()[0]);
1274 } 1274 }
1275 1275
1276 TEST_F(GLES2DecoderTest, FramebufferRenderbufferGLError) { 1276 TEST_P(GLES2DecoderTest, FramebufferRenderbufferGLError) {
1277 DoBindFramebuffer( 1277 DoBindFramebuffer(
1278 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 1278 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
1279 EXPECT_CALL(*gl_, GetError()) 1279 EXPECT_CALL(*gl_, GetError())
1280 .WillOnce(Return(GL_NO_ERROR)) 1280 .WillOnce(Return(GL_NO_ERROR))
1281 .WillOnce(Return(GL_OUT_OF_MEMORY)) 1281 .WillOnce(Return(GL_OUT_OF_MEMORY))
1282 .RetiresOnSaturation(); 1282 .RetiresOnSaturation();
1283 EXPECT_CALL(*gl_, 1283 EXPECT_CALL(*gl_,
1284 FramebufferRenderbufferEXT(GL_FRAMEBUFFER, 1284 FramebufferRenderbufferEXT(GL_FRAMEBUFFER,
1285 GL_COLOR_ATTACHMENT0, 1285 GL_COLOR_ATTACHMENT0,
1286 GL_RENDERBUFFER, 1286 GL_RENDERBUFFER,
1287 kServiceRenderbufferId)) 1287 kServiceRenderbufferId))
1288 .Times(1) 1288 .Times(1)
1289 .RetiresOnSaturation(); 1289 .RetiresOnSaturation();
1290 FramebufferRenderbuffer cmd; 1290 FramebufferRenderbuffer cmd;
1291 cmd.Init(GL_FRAMEBUFFER, 1291 cmd.Init(GL_FRAMEBUFFER,
1292 GL_COLOR_ATTACHMENT0, 1292 GL_COLOR_ATTACHMENT0,
1293 GL_RENDERBUFFER, 1293 GL_RENDERBUFFER,
1294 client_renderbuffer_id_); 1294 client_renderbuffer_id_);
1295 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1295 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1296 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 1296 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
1297 } 1297 }
1298 1298
1299 TEST_F(GLES2DecoderTest, FramebufferTexture2DGLError) { 1299 TEST_P(GLES2DecoderTest, FramebufferTexture2DGLError) {
1300 const GLsizei kWidth = 5; 1300 const GLsizei kWidth = 5;
1301 const GLsizei kHeight = 3; 1301 const GLsizei kHeight = 3;
1302 const GLenum kFormat = GL_RGB; 1302 const GLenum kFormat = GL_RGB;
1303 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); 1303 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
1304 DoTexImage2D(GL_TEXTURE_2D, 1304 DoTexImage2D(GL_TEXTURE_2D,
1305 0, 1305 0,
1306 kFormat, 1306 kFormat,
1307 kWidth, 1307 kWidth,
1308 kHeight, 1308 kHeight,
1309 0, 1309 0,
(...skipping 18 matching lines...) Expand all
1328 FramebufferTexture2D fbtex_cmd; 1328 FramebufferTexture2D fbtex_cmd;
1329 fbtex_cmd.Init(GL_FRAMEBUFFER, 1329 fbtex_cmd.Init(GL_FRAMEBUFFER,
1330 GL_COLOR_ATTACHMENT0, 1330 GL_COLOR_ATTACHMENT0,
1331 GL_TEXTURE_2D, 1331 GL_TEXTURE_2D,
1332 client_texture_id_, 1332 client_texture_id_,
1333 0); 1333 0);
1334 EXPECT_EQ(error::kNoError, ExecuteCmd(fbtex_cmd)); 1334 EXPECT_EQ(error::kNoError, ExecuteCmd(fbtex_cmd));
1335 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 1335 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
1336 } 1336 }
1337 1337
1338 TEST_F(GLES2DecoderTest, RenderbufferStorageGLError) { 1338 TEST_P(GLES2DecoderTest, RenderbufferStorageGLError) {
1339 DoBindRenderbuffer( 1339 DoBindRenderbuffer(
1340 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); 1340 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
1341 EXPECT_CALL(*gl_, GetError()) 1341 EXPECT_CALL(*gl_, GetError())
1342 .WillOnce(Return(GL_NO_ERROR)) 1342 .WillOnce(Return(GL_NO_ERROR))
1343 .WillOnce(Return(GL_OUT_OF_MEMORY)) 1343 .WillOnce(Return(GL_OUT_OF_MEMORY))
1344 .RetiresOnSaturation(); 1344 .RetiresOnSaturation();
1345 EXPECT_CALL(*gl_, RenderbufferStorageEXT(GL_RENDERBUFFER, GL_RGBA, 100, 50)) 1345 EXPECT_CALL(*gl_, RenderbufferStorageEXT(GL_RENDERBUFFER, GL_RGBA, 100, 50))
1346 .Times(1) 1346 .Times(1)
1347 .RetiresOnSaturation(); 1347 .RetiresOnSaturation();
1348 RenderbufferStorage cmd; 1348 RenderbufferStorage cmd;
1349 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 100, 50); 1349 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 100, 50);
1350 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1350 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1351 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 1351 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
1352 } 1352 }
1353 1353
1354 TEST_F(GLES2DecoderTest, RenderbufferStorageBadArgs) { 1354 TEST_P(GLES2DecoderTest, RenderbufferStorageBadArgs) {
1355 DoBindRenderbuffer( 1355 DoBindRenderbuffer(
1356 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); 1356 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
1357 EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)) 1357 EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _))
1358 .Times(0) 1358 .Times(0)
1359 .RetiresOnSaturation(); 1359 .RetiresOnSaturation();
1360 RenderbufferStorage cmd; 1360 RenderbufferStorage cmd;
1361 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, TestHelper::kMaxRenderbufferSize + 1, 1); 1361 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, TestHelper::kMaxRenderbufferSize + 1, 1);
1362 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1362 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1363 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1363 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1364 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 1, TestHelper::kMaxRenderbufferSize + 1); 1364 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 1, TestHelper::kMaxRenderbufferSize + 1);
1365 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1365 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1366 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1366 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1367 } 1367 }
1368 1368
1369 TEST_F(GLES2DecoderManualInitTest, 1369 TEST_P(GLES2DecoderManualInitTest,
1370 RenderbufferStorageMultisampleCHROMIUMGLError) { 1370 RenderbufferStorageMultisampleCHROMIUMGLError) {
1371 InitState init; 1371 InitState init;
1372 init.extensions = "GL_EXT_framebuffer_multisample"; 1372 init.extensions = "GL_EXT_framebuffer_multisample";
1373 init.gl_version = "2.1"; 1373 init.gl_version = "2.1";
1374 init.bind_generates_resource = true; 1374 init.bind_generates_resource = true;
1375 InitDecoder(init); 1375 InitDecoder(init);
1376 DoBindRenderbuffer( 1376 DoBindRenderbuffer(
1377 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); 1377 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
1378 EXPECT_CALL(*gl_, GetError()) 1378 EXPECT_CALL(*gl_, GetError())
1379 .WillOnce(Return(GL_NO_ERROR)) 1379 .WillOnce(Return(GL_NO_ERROR))
1380 .WillOnce(Return(GL_OUT_OF_MEMORY)) 1380 .WillOnce(Return(GL_OUT_OF_MEMORY))
1381 .RetiresOnSaturation(); 1381 .RetiresOnSaturation();
1382 EXPECT_CALL( 1382 EXPECT_CALL(
1383 *gl_, 1383 *gl_,
1384 RenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, 1, GL_RGBA, 100, 50)) 1384 RenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, 1, GL_RGBA, 100, 50))
1385 .Times(1) 1385 .Times(1)
1386 .RetiresOnSaturation(); 1386 .RetiresOnSaturation();
1387 RenderbufferStorageMultisampleCHROMIUM cmd; 1387 RenderbufferStorageMultisampleCHROMIUM cmd;
1388 cmd.Init(GL_RENDERBUFFER, 1, GL_RGBA4, 100, 50); 1388 cmd.Init(GL_RENDERBUFFER, 1, GL_RGBA4, 100, 50);
1389 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1389 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1390 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 1390 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
1391 } 1391 }
1392 1392
1393 TEST_F(GLES2DecoderManualInitTest, 1393 TEST_P(GLES2DecoderManualInitTest,
1394 RenderbufferStorageMultisampleCHROMIUMBadArgs) { 1394 RenderbufferStorageMultisampleCHROMIUMBadArgs) {
1395 InitState init; 1395 InitState init;
1396 init.extensions = "GL_EXT_framebuffer_multisample"; 1396 init.extensions = "GL_EXT_framebuffer_multisample";
1397 init.gl_version = "2.1"; 1397 init.gl_version = "2.1";
1398 init.bind_generates_resource = true; 1398 init.bind_generates_resource = true;
1399 InitDecoder(init); 1399 InitDecoder(init);
1400 DoBindRenderbuffer( 1400 DoBindRenderbuffer(
1401 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); 1401 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
1402 EXPECT_CALL(*gl_, RenderbufferStorageMultisampleEXT(_, _, _, _, _)) 1402 EXPECT_CALL(*gl_, RenderbufferStorageMultisampleEXT(_, _, _, _, _))
1403 .Times(0) 1403 .Times(0)
(...skipping 15 matching lines...) Expand all
1419 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1419 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1420 cmd.Init(GL_RENDERBUFFER, 1420 cmd.Init(GL_RENDERBUFFER,
1421 TestHelper::kMaxSamples, 1421 TestHelper::kMaxSamples,
1422 GL_RGBA4, 1422 GL_RGBA4,
1423 1, 1423 1,
1424 TestHelper::kMaxRenderbufferSize + 1); 1424 TestHelper::kMaxRenderbufferSize + 1);
1425 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1425 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1426 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1426 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1427 } 1427 }
1428 1428
1429 TEST_F(GLES2DecoderManualInitTest, RenderbufferStorageMultisampleCHROMIUM) { 1429 TEST_P(GLES2DecoderManualInitTest, RenderbufferStorageMultisampleCHROMIUM) {
1430 InitState init; 1430 InitState init;
1431 init.extensions = "GL_EXT_framebuffer_multisample"; 1431 init.extensions = "GL_EXT_framebuffer_multisample";
1432 init.gl_version = "2.1"; 1432 init.gl_version = "2.1";
1433 InitDecoder(init); 1433 InitDecoder(init);
1434 DoBindRenderbuffer( 1434 DoBindRenderbuffer(
1435 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); 1435 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
1436 InSequence sequence; 1436 InSequence sequence;
1437 EXPECT_CALL(*gl_, GetError()) 1437 EXPECT_CALL(*gl_, GetError())
1438 .WillOnce(Return(GL_NO_ERROR)) 1438 .WillOnce(Return(GL_NO_ERROR))
1439 .RetiresOnSaturation(); 1439 .RetiresOnSaturation();
(...skipping 12 matching lines...) Expand all
1452 RenderbufferStorageMultisampleCHROMIUM cmd; 1452 RenderbufferStorageMultisampleCHROMIUM cmd;
1453 cmd.Init(GL_RENDERBUFFER, 1453 cmd.Init(GL_RENDERBUFFER,
1454 TestHelper::kMaxSamples, 1454 TestHelper::kMaxSamples,
1455 GL_RGBA4, 1455 GL_RGBA4,
1456 TestHelper::kMaxRenderbufferSize, 1456 TestHelper::kMaxRenderbufferSize,
1457 1); 1457 1);
1458 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1458 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1459 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1459 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1460 } 1460 }
1461 1461
1462 TEST_F(GLES2DecoderManualInitTest, 1462 TEST_P(GLES2DecoderManualInitTest,
1463 RenderbufferStorageMultisampleEXTNotSupported) { 1463 RenderbufferStorageMultisampleEXTNotSupported) {
1464 InitState init; 1464 InitState init;
1465 init.extensions = "GL_EXT_framebuffer_multisample"; 1465 init.extensions = "GL_EXT_framebuffer_multisample";
1466 init.gl_version = "2.1"; 1466 init.gl_version = "2.1";
1467 init.bind_generates_resource = true; 1467 init.bind_generates_resource = true;
1468 InitDecoder(init); 1468 InitDecoder(init);
1469 DoBindRenderbuffer( 1469 DoBindRenderbuffer(
1470 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); 1470 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
1471 InSequence sequence; 1471 InSequence sequence;
1472 // GL_EXT_framebuffer_multisample uses RenderbufferStorageMultisampleCHROMIUM. 1472 // GL_EXT_framebuffer_multisample uses RenderbufferStorageMultisampleCHROMIUM.
1473 RenderbufferStorageMultisampleEXT cmd; 1473 RenderbufferStorageMultisampleEXT cmd;
1474 cmd.Init(GL_RENDERBUFFER, 1474 cmd.Init(GL_RENDERBUFFER,
1475 TestHelper::kMaxSamples, 1475 TestHelper::kMaxSamples,
1476 GL_RGBA4, 1476 GL_RGBA4,
1477 TestHelper::kMaxRenderbufferSize, 1477 TestHelper::kMaxRenderbufferSize,
1478 1); 1478 1);
1479 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1479 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1480 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 1480 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
1481 } 1481 }
1482 1482
1483 class GLES2DecoderMultisampledRenderToTextureTest 1483 class GLES2DecoderMultisampledRenderToTextureTest
1484 : public GLES2DecoderTestWithExtensionsOnGLES2 {}; 1484 : public GLES2DecoderTestWithExtensionsOnGLES2 {
1485 public:
1486 void TestNotCompatibleWithRenderbufferStorageMultisampleCHROMIUM() {
1487 DoBindRenderbuffer(
1488 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
1489 RenderbufferStorageMultisampleCHROMIUM cmd;
1490 cmd.Init(GL_RENDERBUFFER,
1491 TestHelper::kMaxSamples,
1492 GL_RGBA4,
1493 TestHelper::kMaxRenderbufferSize,
1494 1);
1495 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1496 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
1497 }
1498
1499 void TestRenderbufferStorageMultisampleEXT(const char* extension) {
1500 DoBindRenderbuffer(
1501 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
1502 InSequence sequence;
1503 EXPECT_CALL(*gl_, GetError())
1504 .WillOnce(Return(GL_NO_ERROR))
1505 .RetiresOnSaturation();
1506 if (strstr(extension, "GL_IMG_multisampled_render_to_texture")) {
1507 EXPECT_CALL(
1508 *gl_,
1509 RenderbufferStorageMultisampleIMG(GL_RENDERBUFFER,
1510 TestHelper::kMaxSamples,
1511 GL_RGBA,
1512 TestHelper::kMaxRenderbufferSize,
1513 1))
1514 .Times(1)
1515 .RetiresOnSaturation();
1516 } else {
1517 EXPECT_CALL(
1518 *gl_,
1519 RenderbufferStorageMultisampleEXT(GL_RENDERBUFFER,
1520 TestHelper::kMaxSamples,
1521 GL_RGBA,
1522 TestHelper::kMaxRenderbufferSize,
1523 1))
1524 .Times(1)
1525 .RetiresOnSaturation();
1526 }
1527 EXPECT_CALL(*gl_, GetError())
1528 .WillOnce(Return(GL_NO_ERROR))
1529 .RetiresOnSaturation();
1530 RenderbufferStorageMultisampleEXT cmd;
1531 cmd.Init(GL_RENDERBUFFER,
1532 TestHelper::kMaxSamples,
1533 GL_RGBA4,
1534 TestHelper::kMaxRenderbufferSize,
1535 1);
1536 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1537 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1538 }
1539 };
1540
1541 INSTANTIATE_TEST_CASE_P(Service,
1542 GLES2DecoderMultisampledRenderToTextureTest,
1543 ::testing::Bool());
1485 1544
1486 TEST_P(GLES2DecoderMultisampledRenderToTextureTest, 1545 TEST_P(GLES2DecoderMultisampledRenderToTextureTest,
1487 NotCompatibleWithRenderbufferStorageMultisampleCHROMIUM) { 1546 NotCompatibleWithRenderbufferStorageMultisampleCHROMIUM_EXT) {
1488 DoBindRenderbuffer( 1547 Init("GL_EXT_multisampled_render_to_texture");
1489 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); 1548 TestNotCompatibleWithRenderbufferStorageMultisampleCHROMIUM();
1490 RenderbufferStorageMultisampleCHROMIUM cmd;
1491 cmd.Init(GL_RENDERBUFFER,
1492 TestHelper::kMaxSamples,
1493 GL_RGBA4,
1494 TestHelper::kMaxRenderbufferSize,
1495 1);
1496 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1497 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
1498 } 1549 }
1499 1550
1500 TEST_P(GLES2DecoderMultisampledRenderToTextureTest, 1551 TEST_P(GLES2DecoderMultisampledRenderToTextureTest,
1501 RenderbufferStorageMultisampleEXT) { 1552 NotCompatibleWithRenderbufferStorageMultisampleCHROMIUM_IMG) {
1502 DoBindRenderbuffer( 1553 Init("GL_IMG_multisampled_render_to_texture");
1503 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); 1554 TestNotCompatibleWithRenderbufferStorageMultisampleCHROMIUM();
1504 InSequence sequence;
1505 EXPECT_CALL(*gl_, GetError())
1506 .WillOnce(Return(GL_NO_ERROR))
1507 .RetiresOnSaturation();
1508 if (strstr(GetParam(), "GL_IMG_multisampled_render_to_texture")) {
1509 EXPECT_CALL(
1510 *gl_,
1511 RenderbufferStorageMultisampleIMG(GL_RENDERBUFFER,
1512 TestHelper::kMaxSamples,
1513 GL_RGBA,
1514 TestHelper::kMaxRenderbufferSize,
1515 1))
1516 .Times(1)
1517 .RetiresOnSaturation();
1518 } else {
1519 EXPECT_CALL(
1520 *gl_,
1521 RenderbufferStorageMultisampleEXT(GL_RENDERBUFFER,
1522 TestHelper::kMaxSamples,
1523 GL_RGBA,
1524 TestHelper::kMaxRenderbufferSize,
1525 1))
1526 .Times(1)
1527 .RetiresOnSaturation();
1528 }
1529 EXPECT_CALL(*gl_, GetError())
1530 .WillOnce(Return(GL_NO_ERROR))
1531 .RetiresOnSaturation();
1532 RenderbufferStorageMultisampleEXT cmd;
1533 cmd.Init(GL_RENDERBUFFER,
1534 TestHelper::kMaxSamples,
1535 GL_RGBA4,
1536 TestHelper::kMaxRenderbufferSize,
1537 1);
1538 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1539 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1540 } 1555 }
1541 1556
1542 INSTANTIATE_TEST_CASE_P( 1557 TEST_P(GLES2DecoderMultisampledRenderToTextureTest,
1543 GLES2DecoderMultisampledRenderToTextureTests, 1558 RenderbufferStorageMultisampleEXT_EXT) {
1544 GLES2DecoderMultisampledRenderToTextureTest, 1559 Init("GL_EXT_multisampled_render_to_texture");
1545 ::testing::Values("GL_EXT_multisampled_render_to_texture", 1560 TestRenderbufferStorageMultisampleEXT(
1546 "GL_IMG_multisampled_render_to_texture")); 1561 "GL_EXT_multisampled_render_to_texture");
1562 }
1547 1563
1548 TEST_F(GLES2DecoderTest, ReadPixelsGLError) { 1564 TEST_P(GLES2DecoderMultisampledRenderToTextureTest,
1565 RenderbufferStorageMultisampleEXT_IMG) {
1566 Init("GL_IMG_multisampled_render_to_texture");
1567 TestRenderbufferStorageMultisampleEXT(
1568 "GL_IMG_multisampled_render_to_texture");
1569 }
1570
1571 TEST_P(GLES2DecoderTest, ReadPixelsGLError) {
1549 GLenum kFormat = GL_RGBA; 1572 GLenum kFormat = GL_RGBA;
1550 GLint x = 0; 1573 GLint x = 0;
1551 GLint y = 0; 1574 GLint y = 0;
1552 GLsizei width = 2; 1575 GLsizei width = 2;
1553 GLsizei height = 4; 1576 GLsizei height = 4;
1554 typedef ReadPixels::Result Result; 1577 typedef ReadPixels::Result Result;
1555 Result* result = GetSharedMemoryAs<Result*>(); 1578 Result* result = GetSharedMemoryAs<Result*>();
1556 uint32 result_shm_id = kSharedMemoryId; 1579 uint32 result_shm_id = kSharedMemoryId;
1557 uint32 result_shm_offset = kSharedMemoryOffset; 1580 uint32 result_shm_offset = kSharedMemoryOffset;
1558 uint32 pixels_shm_id = kSharedMemoryId; 1581 uint32 pixels_shm_id = kSharedMemoryId;
(...skipping 15 matching lines...) Expand all
1574 GL_UNSIGNED_BYTE, 1597 GL_UNSIGNED_BYTE,
1575 pixels_shm_id, 1598 pixels_shm_id,
1576 pixels_shm_offset, 1599 pixels_shm_offset,
1577 result_shm_id, 1600 result_shm_id,
1578 result_shm_offset, 1601 result_shm_offset,
1579 false); 1602 false);
1580 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1603 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1581 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 1604 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
1582 } 1605 }
1583 1606
1584 TEST_F(GLES2DecoderWithShaderTest, UnClearedAttachmentsGetClearedOnClear) { 1607 TEST_P(GLES2DecoderWithShaderTest, UnClearedAttachmentsGetClearedOnClear) {
1585 const GLuint kFBOClientTextureId = 4100; 1608 const GLuint kFBOClientTextureId = 4100;
1586 const GLuint kFBOServiceTextureId = 4101; 1609 const GLuint kFBOServiceTextureId = 4101;
1587 1610
1588 // Register a texture id. 1611 // Register a texture id.
1589 EXPECT_CALL(*gl_, GenTextures(_, _)) 1612 EXPECT_CALL(*gl_, GenTextures(_, _))
1590 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) 1613 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId))
1591 .RetiresOnSaturation(); 1614 .RetiresOnSaturation();
1592 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); 1615 GenHelper<GenTexturesImmediate>(kFBOClientTextureId);
1593 1616
1594 // Setup "render to" texture. 1617 // Setup "render to" texture.
(...skipping 23 matching lines...) Expand all
1618 1.0f, // depth 1641 1.0f, // depth
1619 false); // scissor test 1642 false); // scissor test
1620 SetupExpectationsForApplyingDirtyState(false, // Framebuffer is RGB 1643 SetupExpectationsForApplyingDirtyState(false, // Framebuffer is RGB
1621 false, // Framebuffer has depth 1644 false, // Framebuffer has depth
1622 false, // Framebuffer has stencil 1645 false, // Framebuffer has stencil
1623 0x1111, // color bits 1646 0x1111, // color bits
1624 false, // depth mask 1647 false, // depth mask
1625 false, // depth enabled 1648 false, // depth enabled
1626 0, // front stencil mask 1649 0, // front stencil mask
1627 0, // back stencil mask 1650 0, // back stencil mask
1628 false, // stencil enabled 1651 false); // stencil enabled
1629 false, // cull_face_enabled
1630 false, // scissor_test_enabled
1631 false); // blend_enabled
1632 1652
1633 EXPECT_CALL(*gl_, Clear(GL_COLOR_BUFFER_BIT)).Times(1).RetiresOnSaturation(); 1653 EXPECT_CALL(*gl_, Clear(GL_COLOR_BUFFER_BIT)).Times(1).RetiresOnSaturation();
1634 1654
1635 Clear cmd; 1655 Clear cmd;
1636 cmd.Init(GL_COLOR_BUFFER_BIT); 1656 cmd.Init(GL_COLOR_BUFFER_BIT);
1637 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1657 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1638 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1658 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1639 } 1659 }
1640 1660
1641 TEST_F(GLES2DecoderWithShaderTest, UnClearedAttachmentsGetClearedOnReadPixels) { 1661 TEST_P(GLES2DecoderWithShaderTest, UnClearedAttachmentsGetClearedOnReadPixels) {
1642 const GLuint kFBOClientTextureId = 4100; 1662 const GLuint kFBOClientTextureId = 4100;
1643 const GLuint kFBOServiceTextureId = 4101; 1663 const GLuint kFBOServiceTextureId = 4101;
1644 1664
1645 // Register a texture id. 1665 // Register a texture id.
1646 EXPECT_CALL(*gl_, GenTextures(_, _)) 1666 EXPECT_CALL(*gl_, GenTextures(_, _))
1647 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) 1667 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId))
1648 .RetiresOnSaturation(); 1668 .RetiresOnSaturation();
1649 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); 1669 GenHelper<GenTexturesImmediate>(kFBOClientTextureId);
1650 1670
1651 // Setup "render to" texture. 1671 // Setup "render to" texture.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1697 GL_UNSIGNED_BYTE, 1717 GL_UNSIGNED_BYTE,
1698 pixels_shm_id, 1718 pixels_shm_id,
1699 pixels_shm_offset, 1719 pixels_shm_offset,
1700 result_shm_id, 1720 result_shm_id,
1701 result_shm_offset, 1721 result_shm_offset,
1702 false); 1722 false);
1703 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1723 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1704 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1724 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1705 } 1725 }
1706 1726
1707 TEST_F(GLES2DecoderManualInitTest, 1727 TEST_P(GLES2DecoderManualInitTest,
1708 UnClearedAttachmentsGetClearedOnReadPixelsAndDrawBufferGetsRestored) { 1728 UnClearedAttachmentsGetClearedOnReadPixelsAndDrawBufferGetsRestored) {
1709 InitState init; 1729 InitState init;
1710 init.extensions = "GL_EXT_framebuffer_multisample"; 1730 init.extensions = "GL_EXT_framebuffer_multisample";
1711 init.gl_version = "2.1"; 1731 init.gl_version = "2.1";
1712 init.bind_generates_resource = true; 1732 init.bind_generates_resource = true;
1713 InitDecoder(init); 1733 InitDecoder(init);
1714 const GLuint kFBOClientTextureId = 4100; 1734 const GLuint kFBOClientTextureId = 4100;
1715 const GLuint kFBOServiceTextureId = 4101; 1735 const GLuint kFBOServiceTextureId = 4101;
1716 1736
1717 // Register a texture id. 1737 // Register a texture id.
1718 EXPECT_CALL(*gl_, GenTextures(_, _)) 1738 EXPECT_CALL(*gl_, GenTextures(_, _))
1719 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) 1739 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId))
1720 .RetiresOnSaturation(); 1740 .RetiresOnSaturation();
1721 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); 1741 GenHelper<GenTexturesImmediate>(kFBOClientTextureId);
1722 1742
1723 // Setup "render from" texture. 1743 // Setup "render from" texture.
1724 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); 1744 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId);
1725 DoTexImage2D( 1745 DoTexImage2D(
1726 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); 1746 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0);
1727 DoBindFramebuffer( 1747 DoBindFramebuffer(
1728 GL_READ_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 1748 GL_READ_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
1729 DoFramebufferTexture2D(GL_READ_FRAMEBUFFER, 1749 DoFramebufferTexture2D(GL_READ_FRAMEBUFFER,
1730 GL_COLOR_ATTACHMENT0, 1750 GL_COLOR_ATTACHMENT0,
1731 GL_TEXTURE_2D, 1751 GL_TEXTURE_2D,
1732 kFBOClientTextureId, 1752 kFBOClientTextureId,
1733 kFBOServiceTextureId, 1753 kFBOServiceTextureId,
1734 0, 1754 0,
1735 GL_NO_ERROR); 1755 GL_NO_ERROR);
1736 1756
1757 // Enable GL_SCISSOR_TEST to make sure we disable it in the clear,
1758 // then re-enable after.
1759 DoEnableDisable(GL_SCISSOR_TEST, true);
1760
1737 SetupExpectationsForFramebufferClearingMulti( 1761 SetupExpectationsForFramebufferClearingMulti(
1738 kServiceFramebufferId, // read framebuffer service id 1762 kServiceFramebufferId, // read framebuffer service id
1739 0, // backbuffer service id 1763 0, // backbuffer service id
1740 GL_READ_FRAMEBUFFER, // target 1764 GL_READ_FRAMEBUFFER, // target
1741 GL_COLOR_BUFFER_BIT, // clear bits 1765 GL_COLOR_BUFFER_BIT, // clear bits
1742 0, 1766 0,
1743 0, 1767 0,
1744 0, 1768 0,
1745 0, // color 1769 0, // color
1746 0, // stencil 1770 0, // stencil
1747 1.0f, // depth 1771 1.0f, // depth
1748 false); // scissor test 1772 true); // scissor test
1749 1773
1750 EXPECT_CALL(*gl_, GetError()) 1774 EXPECT_CALL(*gl_, GetError())
1751 .WillOnce(Return(GL_NO_ERROR)) 1775 .WillOnce(Return(GL_NO_ERROR))
1752 .WillOnce(Return(GL_NO_ERROR)) 1776 .WillOnce(Return(GL_NO_ERROR))
1753 .RetiresOnSaturation(); 1777 .RetiresOnSaturation();
1754 EXPECT_CALL(*gl_, ReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, _)) 1778 EXPECT_CALL(*gl_, ReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, _))
1755 .Times(1) 1779 .Times(1)
1756 .RetiresOnSaturation(); 1780 .RetiresOnSaturation();
1757 typedef ReadPixels::Result Result; 1781 typedef ReadPixels::Result Result;
1758 uint32 result_shm_id = kSharedMemoryId; 1782 uint32 result_shm_id = kSharedMemoryId;
1759 uint32 result_shm_offset = kSharedMemoryOffset; 1783 uint32 result_shm_offset = kSharedMemoryOffset;
1760 uint32 pixels_shm_id = kSharedMemoryId; 1784 uint32 pixels_shm_id = kSharedMemoryId;
1761 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(Result); 1785 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(Result);
1762 ReadPixels cmd; 1786 ReadPixels cmd;
1763 cmd.Init(0, 1787 cmd.Init(0,
1764 0, 1788 0,
1765 1, 1789 1,
1766 1, 1790 1,
1767 GL_RGBA, 1791 GL_RGBA,
1768 GL_UNSIGNED_BYTE, 1792 GL_UNSIGNED_BYTE,
1769 pixels_shm_id, 1793 pixels_shm_id,
1770 pixels_shm_offset, 1794 pixels_shm_offset,
1771 result_shm_id, 1795 result_shm_id,
1772 result_shm_offset, 1796 result_shm_offset,
1773 false); 1797 false);
1774 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1798 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1775 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1799 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1776 } 1800 }
1777 1801
1778 TEST_F(GLES2DecoderWithShaderTest, CopyTexImageWithInCompleteFBOFails) { 1802 TEST_P(GLES2DecoderWithShaderTest, CopyTexImageWithInCompleteFBOFails) {
1779 GLenum target = GL_TEXTURE_2D; 1803 GLenum target = GL_TEXTURE_2D;
1780 GLint level = 0; 1804 GLint level = 0;
1781 GLenum internal_format = GL_RGBA; 1805 GLenum internal_format = GL_RGBA;
1782 GLsizei width = 2; 1806 GLsizei width = 2;
1783 GLsizei height = 4; 1807 GLsizei height = 4;
1784 GLint border = 0; 1808 GLint border = 0;
1785 SetupTexture(); 1809 SetupTexture();
1786 DoBindRenderbuffer( 1810 DoBindRenderbuffer(
1787 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); 1811 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
1788 DoBindFramebuffer( 1812 DoBindFramebuffer(
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1847 DoDeleteFramebuffer(client_framebuffer_id_, 1871 DoDeleteFramebuffer(client_framebuffer_id_,
1848 kServiceFramebufferId, 1872 kServiceFramebufferId,
1849 bound_fbo, 1873 bound_fbo,
1850 GL_FRAMEBUFFER, 1874 GL_FRAMEBUFFER,
1851 0, 1875 0,
1852 bound_fbo, 1876 bound_fbo,
1853 GL_FRAMEBUFFER, 1877 GL_FRAMEBUFFER,
1854 0); 1878 0);
1855 } 1879 }
1856 1880
1857 TEST_F(GLES2DecoderWithShaderTest, 1881 TEST_P(GLES2DecoderWithShaderTest,
1858 RenderbufferChangesMarkFBOAsNotCompleteBoundFBO) { 1882 RenderbufferChangesMarkFBOAsNotCompleteBoundFBO) {
1859 CheckRenderbufferChangesMarkFBOAsNotComplete(true); 1883 CheckRenderbufferChangesMarkFBOAsNotComplete(true);
1860 } 1884 }
1861 1885
1862 TEST_F(GLES2DecoderWithShaderTest, 1886 TEST_P(GLES2DecoderWithShaderTest,
1863 RenderbufferChangesMarkFBOAsNotCompleteUnboundFBO) { 1887 RenderbufferChangesMarkFBOAsNotCompleteUnboundFBO) {
1864 CheckRenderbufferChangesMarkFBOAsNotComplete(false); 1888 CheckRenderbufferChangesMarkFBOAsNotComplete(false);
1865 } 1889 }
1866 1890
1867 void GLES2DecoderWithShaderTest::CheckTextureChangesMarkFBOAsNotComplete( 1891 void GLES2DecoderWithShaderTest::CheckTextureChangesMarkFBOAsNotComplete(
1868 bool bound_fbo) { 1892 bool bound_fbo) {
1869 FramebufferManager* framebuffer_manager = group().framebuffer_manager(); 1893 FramebufferManager* framebuffer_manager = group().framebuffer_manager();
1870 const GLuint kFBOClientTextureId = 4100; 1894 const GLuint kFBOClientTextureId = 4100;
1871 const GLuint kFBOServiceTextureId = 4101; 1895 const GLuint kFBOServiceTextureId = 4101;
1872 1896
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
1955 DoDeleteFramebuffer(client_framebuffer_id_, 1979 DoDeleteFramebuffer(client_framebuffer_id_,
1956 kServiceFramebufferId, 1980 kServiceFramebufferId,
1957 bound_fbo, 1981 bound_fbo,
1958 GL_FRAMEBUFFER, 1982 GL_FRAMEBUFFER,
1959 0, 1983 0,
1960 bound_fbo, 1984 bound_fbo,
1961 GL_FRAMEBUFFER, 1985 GL_FRAMEBUFFER,
1962 0); 1986 0);
1963 } 1987 }
1964 1988
1965 TEST_F(GLES2DecoderWithShaderTest, TextureChangesMarkFBOAsNotCompleteBoundFBO) { 1989 TEST_P(GLES2DecoderWithShaderTest, TextureChangesMarkFBOAsNotCompleteBoundFBO) {
1966 CheckTextureChangesMarkFBOAsNotComplete(true); 1990 CheckTextureChangesMarkFBOAsNotComplete(true);
1967 } 1991 }
1968 1992
1969 TEST_F(GLES2DecoderWithShaderTest, 1993 TEST_P(GLES2DecoderWithShaderTest,
1970 TextureChangesMarkFBOAsNotCompleteUnboundFBO) { 1994 TextureChangesMarkFBOAsNotCompleteUnboundFBO) {
1971 CheckTextureChangesMarkFBOAsNotComplete(false); 1995 CheckTextureChangesMarkFBOAsNotComplete(false);
1972 } 1996 }
1973 1997
1974 TEST_F(GLES2DecoderTest, CanChangeSurface) { 1998 TEST_P(GLES2DecoderTest, CanChangeSurface) {
1975 scoped_refptr<GLSurfaceMock> other_surface(new GLSurfaceMock); 1999 scoped_refptr<GLSurfaceMock> other_surface(new GLSurfaceMock);
1976 EXPECT_CALL(*other_surface.get(), GetBackingFrameBufferObject()) 2000 EXPECT_CALL(*other_surface.get(), GetBackingFrameBufferObject())
1977 .WillOnce(Return(7)); 2001 .WillOnce(Return(7));
1978 EXPECT_CALL(*gl_, BindFramebufferEXT(GL_FRAMEBUFFER_EXT, 7)); 2002 EXPECT_CALL(*gl_, BindFramebufferEXT(GL_FRAMEBUFFER_EXT, 7));
1979 2003
1980 decoder_->SetSurface(other_surface); 2004 decoder_->SetSurface(other_surface);
1981 } 2005 }
1982 2006
1983 TEST_F(GLES2DecoderTest, DrawBuffersEXTImmediateSuccceeds) { 2007 TEST_P(GLES2DecoderTest, DrawBuffersEXTImmediateSuccceeds) {
1984 const GLsizei count = 1; 2008 const GLsizei count = 1;
1985 const GLenum bufs[] = {GL_COLOR_ATTACHMENT0}; 2009 const GLenum bufs[] = {GL_COLOR_ATTACHMENT0};
1986 DrawBuffersEXTImmediate& cmd = *GetImmediateAs<DrawBuffersEXTImmediate>(); 2010 DrawBuffersEXTImmediate& cmd = *GetImmediateAs<DrawBuffersEXTImmediate>();
1987 cmd.Init(count, bufs); 2011 cmd.Init(count, bufs);
1988 2012
1989 DoBindFramebuffer( 2013 DoBindFramebuffer(
1990 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 2014 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
1991 EXPECT_CALL(*gl_, DrawBuffersARB(count, _)).Times(1).RetiresOnSaturation(); 2015 EXPECT_CALL(*gl_, DrawBuffersARB(count, _)).Times(1).RetiresOnSaturation();
1992 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(bufs))); 2016 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(bufs)));
1993 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 2017 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1994 } 2018 }
1995 2019
1996 TEST_F(GLES2DecoderTest, DrawBuffersEXTImmediateFails) { 2020 TEST_P(GLES2DecoderTest, DrawBuffersEXTImmediateFails) {
1997 const GLsizei count = 1; 2021 const GLsizei count = 1;
1998 const GLenum bufs[] = {GL_COLOR_ATTACHMENT1_EXT}; 2022 const GLenum bufs[] = {GL_COLOR_ATTACHMENT1_EXT};
1999 DrawBuffersEXTImmediate& cmd = *GetImmediateAs<DrawBuffersEXTImmediate>(); 2023 DrawBuffersEXTImmediate& cmd = *GetImmediateAs<DrawBuffersEXTImmediate>();
2000 cmd.Init(count, bufs); 2024 cmd.Init(count, bufs);
2001 2025
2002 DoBindFramebuffer( 2026 DoBindFramebuffer(
2003 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 2027 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
2004 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(bufs))); 2028 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(bufs)));
2005 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 2029 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
2006 } 2030 }
2007 2031
2008 TEST_F(GLES2DecoderTest, DrawBuffersEXTImmediateBackbuffer) { 2032 TEST_P(GLES2DecoderTest, DrawBuffersEXTImmediateBackbuffer) {
2009 const GLsizei count = 1; 2033 const GLsizei count = 1;
2010 const GLenum bufs[] = {GL_BACK}; 2034 const GLenum bufs[] = {GL_BACK};
2011 DrawBuffersEXTImmediate& cmd = *GetImmediateAs<DrawBuffersEXTImmediate>(); 2035 DrawBuffersEXTImmediate& cmd = *GetImmediateAs<DrawBuffersEXTImmediate>();
2012 cmd.Init(count, bufs); 2036 cmd.Init(count, bufs);
2013 2037
2014 DoBindFramebuffer( 2038 DoBindFramebuffer(
2015 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 2039 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
2016 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(bufs))); 2040 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(bufs)));
2017 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 2041 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
2018 2042
2019 DoBindFramebuffer(GL_FRAMEBUFFER, 0, 0); // unbind 2043 DoBindFramebuffer(GL_FRAMEBUFFER, 0, 0); // unbind
2020 2044
2021 EXPECT_CALL(*gl_, DrawBuffersARB(count, _)).Times(1).RetiresOnSaturation(); 2045 EXPECT_CALL(*gl_, DrawBuffersARB(count, _)).Times(1).RetiresOnSaturation();
2022 2046
2023 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(bufs))); 2047 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(bufs)));
2024 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 2048 EXPECT_EQ(GL_NO_ERROR, GetGLError());
2025 } 2049 }
2026 2050
2027 TEST_F(GLES2DecoderManualInitTest, InvalidateFramebufferBinding) { 2051 TEST_P(GLES2DecoderManualInitTest, InvalidateFramebufferBinding) {
2028 InitState init; 2052 InitState init;
2029 init.gl_version = "opengl es 3.0"; 2053 init.gl_version = "opengl es 3.0";
2030 InitDecoder(init); 2054 InitDecoder(init);
2031 2055
2032 // EXPECT_EQ can't be used to compare function pointers 2056 // EXPECT_EQ can't be used to compare function pointers
2033 EXPECT_TRUE( 2057 EXPECT_TRUE(
2034 gfx::MockGLInterface::GetGLProcAddress("glInvalidateFramebuffer") == 2058 gfx::MockGLInterface::GetGLProcAddress("glInvalidateFramebuffer") ==
2035 gfx::g_driver_gl.fn.glDiscardFramebufferEXTFn); 2059 gfx::g_driver_gl.fn.glDiscardFramebufferEXTFn);
2036 EXPECT_TRUE( 2060 EXPECT_TRUE(
2037 gfx::MockGLInterface::GetGLProcAddress("glInvalidateFramebuffer") != 2061 gfx::MockGLInterface::GetGLProcAddress("glInvalidateFramebuffer") !=
2038 gfx::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT")); 2062 gfx::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT"));
2039 } 2063 }
2040 2064
2041 TEST_F(GLES2DecoderManualInitTest, DiscardFramebufferEXT) { 2065 TEST_P(GLES2DecoderManualInitTest, DiscardFramebufferEXT) {
2042 InitState init; 2066 InitState init;
2043 init.extensions = "GL_EXT_discard_framebuffer"; 2067 init.extensions = "GL_EXT_discard_framebuffer";
2044 init.gl_version = "opengl es 2.0"; 2068 init.gl_version = "opengl es 2.0";
2045 InitDecoder(init); 2069 InitDecoder(init);
2046 2070
2047 // EXPECT_EQ can't be used to compare function pointers 2071 // EXPECT_EQ can't be used to compare function pointers
2048 EXPECT_TRUE( 2072 EXPECT_TRUE(
2049 gfx::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT") == 2073 gfx::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT") ==
2050 gfx::g_driver_gl.fn.glDiscardFramebufferEXTFn); 2074 gfx::g_driver_gl.fn.glDiscardFramebufferEXTFn);
2051 2075
(...skipping 21 matching lines...) Expand all
2073 .RetiresOnSaturation(); 2097 .RetiresOnSaturation();
2074 DiscardFramebufferEXTImmediate& cmd = 2098 DiscardFramebufferEXTImmediate& cmd =
2075 *GetImmediateAs<DiscardFramebufferEXTImmediate>(); 2099 *GetImmediateAs<DiscardFramebufferEXTImmediate>();
2076 cmd.Init(target, count, attachments); 2100 cmd.Init(target, count, attachments);
2077 2101
2078 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(attachments))); 2102 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(attachments)));
2079 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 2103 EXPECT_EQ(GL_NO_ERROR, GetGLError());
2080 EXPECT_FALSE(framebuffer->IsCleared()); 2104 EXPECT_FALSE(framebuffer->IsCleared());
2081 } 2105 }
2082 2106
2083 TEST_F(GLES2DecoderTest, DiscardFramebufferEXTUnsupported) { 2107 TEST_P(GLES2DecoderTest, DiscardFramebufferEXTUnsupported) {
2084 const GLenum target = GL_FRAMEBUFFER; 2108 const GLenum target = GL_FRAMEBUFFER;
2085 const GLsizei count = 1; 2109 const GLsizei count = 1;
2086 const GLenum attachments[] = {GL_COLOR_EXT}; 2110 const GLenum attachments[] = {GL_COLOR_EXT};
2087 DiscardFramebufferEXTImmediate& cmd = 2111 DiscardFramebufferEXTImmediate& cmd =
2088 *GetImmediateAs<DiscardFramebufferEXTImmediate>(); 2112 *GetImmediateAs<DiscardFramebufferEXTImmediate>();
2089 cmd.Init(target, count, attachments); 2113 cmd.Init(target, count, attachments);
2090 2114
2091 // Should not result into a call into GL. 2115 // Should not result into a call into GL.
2092 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(attachments))); 2116 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(attachments)));
2093 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 2117 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
2094 } 2118 }
2095 2119
2096 TEST_F(GLES2DecoderManualInitTest, ReadFormatExtension) { 2120 TEST_P(GLES2DecoderManualInitTest, ReadFormatExtension) {
2097 InitState init; 2121 InitState init;
2098 init.extensions = "GL_OES_read_format"; 2122 init.extensions = "GL_OES_read_format";
2099 init.gl_version = "2.1"; 2123 init.gl_version = "2.1";
2100 init.bind_generates_resource = true; 2124 init.bind_generates_resource = true;
2101 InitDecoder(init); 2125 InitDecoder(init);
2102 2126
2103 EXPECT_CALL(*gl_, GetError()) 2127 EXPECT_CALL(*gl_, GetError())
2104 .WillOnce(Return(GL_NO_ERROR)) 2128 .WillOnce(Return(GL_NO_ERROR))
2105 .WillOnce(Return(GL_NO_ERROR)) 2129 .WillOnce(Return(GL_NO_ERROR))
2106 .WillOnce(Return(GL_NO_ERROR)) 2130 .WillOnce(Return(GL_NO_ERROR))
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
2146 result->size = 0; 2170 result->size = 0;
2147 EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(1).RetiresOnSaturation(); 2171 EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(1).RetiresOnSaturation();
2148 cmd.Init(GL_IMPLEMENTATION_COLOR_READ_TYPE, 2172 cmd.Init(GL_IMPLEMENTATION_COLOR_READ_TYPE,
2149 shared_memory_id_, 2173 shared_memory_id_,
2150 shared_memory_offset_); 2174 shared_memory_offset_);
2151 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 2175 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
2152 EXPECT_EQ(1, result->GetNumResults()); 2176 EXPECT_EQ(1, result->GetNumResults());
2153 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 2177 EXPECT_EQ(GL_NO_ERROR, GetGLError());
2154 } 2178 }
2155 2179
2156 TEST_F(GLES2DecoderManualInitTest, NoReadFormatExtension) { 2180 TEST_P(GLES2DecoderManualInitTest, NoReadFormatExtension) {
2157 InitState init; 2181 InitState init;
2158 init.gl_version = "2.1"; 2182 init.gl_version = "2.1";
2159 init.bind_generates_resource = true; 2183 init.bind_generates_resource = true;
2160 InitDecoder(init); 2184 InitDecoder(init);
2161 2185
2162 EXPECT_CALL(*gl_, GetError()) 2186 EXPECT_CALL(*gl_, GetError())
2163 .WillOnce(Return(GL_NO_ERROR)) 2187 .WillOnce(Return(GL_NO_ERROR))
2164 .WillOnce(Return(GL_NO_ERROR)) 2188 .WillOnce(Return(GL_NO_ERROR))
2165 .WillOnce(Return(GL_NO_ERROR)) 2189 .WillOnce(Return(GL_NO_ERROR))
2166 .WillOnce(Return(GL_NO_ERROR)) 2190 .WillOnce(Return(GL_NO_ERROR))
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2210 EXPECT_EQ(1, result->GetNumResults()); 2234 EXPECT_EQ(1, result->GetNumResults());
2211 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 2235 EXPECT_EQ(GL_NO_ERROR, GetGLError());
2212 } 2236 }
2213 2237
2214 // TODO(gman): PixelStorei 2238 // TODO(gman): PixelStorei
2215 2239
2216 // TODO(gman): SwapBuffers 2240 // TODO(gman): SwapBuffers
2217 2241
2218 } // namespace gles2 2242 } // namespace gles2
2219 } // namespace gpu 2243 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698