| 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.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 21 matching lines...) Expand all Loading... |
| 32 #if !defined(GL_DEPTH24_STENCIL8) | 32 #if !defined(GL_DEPTH24_STENCIL8) |
| 33 #define GL_DEPTH24_STENCIL8 0x88F0 | 33 #define GL_DEPTH24_STENCIL8 0x88F0 |
| 34 #endif | 34 #endif |
| 35 | 35 |
| 36 using ::gfx::MockGLInterface; | 36 using ::gfx::MockGLInterface; |
| 37 using ::testing::_; | 37 using ::testing::_; |
| 38 using ::testing::DoAll; | 38 using ::testing::DoAll; |
| 39 using ::testing::InSequence; | 39 using ::testing::InSequence; |
| 40 using ::testing::Invoke; | 40 using ::testing::Invoke; |
| 41 using ::testing::MatcherCast; | 41 using ::testing::MatcherCast; |
| 42 using ::testing::Mock; | |
| 43 using ::testing::Pointee; | 42 using ::testing::Pointee; |
| 44 using ::testing::Return; | 43 using ::testing::Return; |
| 45 using ::testing::SaveArg; | 44 using ::testing::SaveArg; |
| 46 using ::testing::SetArrayArgument; | 45 using ::testing::SetArrayArgument; |
| 47 using ::testing::SetArgumentPointee; | 46 using ::testing::SetArgumentPointee; |
| 48 using ::testing::SetArgPointee; | 47 using ::testing::SetArgPointee; |
| 49 using ::testing::StrEq; | 48 using ::testing::StrEq; |
| 50 using ::testing::StrictMock; | 49 using ::testing::StrictMock; |
| 51 | 50 |
| 52 namespace gpu { | 51 namespace gpu { |
| 53 namespace gles2 { | 52 namespace gles2 { |
| 54 | 53 |
| 55 using namespace cmds; | 54 using namespace cmds; |
| 56 | 55 |
| 57 class GLES2DecoderTest : public GLES2DecoderTestBase { | 56 class GLES2DecoderTest : public GLES2DecoderTestBase { |
| 58 public: | 57 public: |
| 59 GLES2DecoderTest() { } | 58 GLES2DecoderTest() { } |
| 60 | 59 |
| 61 protected: | 60 protected: |
| 62 void CheckReadPixelsOutOfRange( | 61 void CheckReadPixelsOutOfRange( |
| 63 GLint in_read_x, GLint in_read_y, | 62 GLint in_read_x, GLint in_read_y, |
| 64 GLsizei in_read_width, GLsizei in_read_height, | 63 GLsizei in_read_width, GLsizei in_read_height, |
| 65 bool init); | 64 bool init); |
| 66 }; | 65 }; |
| 67 | 66 |
| 68 class GLES2DecoderTestWithExtensionsOnGLES2 : public GLES2DecoderTest { | 67 class GLES2DecoderTestWithExtensionsOnGLES2 |
| 68 : public GLES2DecoderTest, |
| 69 public ::testing::WithParamInterface<const char*> { |
| 69 public: | 70 public: |
| 70 GLES2DecoderTestWithExtensionsOnGLES2() {} | 71 GLES2DecoderTestWithExtensionsOnGLES2() {} |
| 71 | 72 |
| 72 virtual void SetUp() {} | 73 virtual void SetUp() { |
| 73 | |
| 74 void Init(const char* extensions) { | |
| 75 InitState init; | 74 InitState init; |
| 76 init.extensions = extensions; | 75 init.extensions = GetParam(); |
| 77 init.gl_version = "opengl es 2.0"; | 76 init.gl_version = "opengl es 2.0"; |
| 78 init.has_alpha = true; | 77 init.has_alpha = true; |
| 79 init.has_depth = true; | 78 init.has_depth = true; |
| 80 init.request_alpha = true; | 79 init.request_alpha = true; |
| 81 init.request_depth = true; | 80 init.request_depth = true; |
| 82 InitDecoder(init); | 81 InitDecoder(init); |
| 83 } | 82 } |
| 84 }; | 83 }; |
| 85 | 84 |
| 86 class GLES2DecoderWithShaderTest : public GLES2DecoderWithShaderTestBase { | 85 class GLES2DecoderWithShaderTest : public GLES2DecoderWithShaderTestBase { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 } | 131 } |
| 133 }; | 132 }; |
| 134 | 133 |
| 135 class GLES2DecoderManualInitTest : public GLES2DecoderWithShaderTest { | 134 class GLES2DecoderManualInitTest : public GLES2DecoderWithShaderTest { |
| 136 public: | 135 public: |
| 137 GLES2DecoderManualInitTest() { } | 136 GLES2DecoderManualInitTest() { } |
| 138 | 137 |
| 139 // Override default setup so nothing gets setup. | 138 // Override default setup so nothing gets setup. |
| 140 virtual void SetUp() { | 139 virtual void SetUp() { |
| 141 } | 140 } |
| 142 | |
| 143 void DirtyStateMaskTest(GLuint color_bits, | |
| 144 bool depth_mask, | |
| 145 GLuint front_stencil_mask, | |
| 146 GLuint back_stencil_mask) { | |
| 147 ColorMask color_mask_cmd; | |
| 148 color_mask_cmd.Init((color_bits & 0x1000) != 0, | |
| 149 (color_bits & 0x0100) != 0, | |
| 150 (color_bits & 0x0010) != 0, | |
| 151 (color_bits & 0x0001) != 0); | |
| 152 EXPECT_EQ(error::kNoError, ExecuteCmd(color_mask_cmd)); | |
| 153 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | |
| 154 | |
| 155 DepthMask depth_mask_cmd; | |
| 156 depth_mask_cmd.Init(depth_mask); | |
| 157 EXPECT_EQ(error::kNoError, ExecuteCmd(depth_mask_cmd)); | |
| 158 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | |
| 159 | |
| 160 StencilMaskSeparate front_stencil_mask_cmd; | |
| 161 front_stencil_mask_cmd.Init(GL_FRONT, front_stencil_mask); | |
| 162 EXPECT_EQ(error::kNoError, ExecuteCmd(front_stencil_mask_cmd)); | |
| 163 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | |
| 164 | |
| 165 StencilMaskSeparate back_stencil_mask_cmd; | |
| 166 back_stencil_mask_cmd.Init(GL_BACK, back_stencil_mask); | |
| 167 EXPECT_EQ(error::kNoError, ExecuteCmd(back_stencil_mask_cmd)); | |
| 168 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | |
| 169 | |
| 170 SetupExpectationsForApplyingDirtyState( | |
| 171 false, // Framebuffer is RGB | |
| 172 true, // Framebuffer has depth | |
| 173 true, // Framebuffer has stencil | |
| 174 color_bits, // color bits | |
| 175 depth_mask, // depth mask | |
| 176 false, // depth enabled | |
| 177 front_stencil_mask, // front stencil mask | |
| 178 back_stencil_mask, // back stencil mask | |
| 179 false); // stencil enabled | |
| 180 | |
| 181 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | |
| 182 .Times(1) | |
| 183 .RetiresOnSaturation(); | |
| 184 DrawArrays draw_cmd; | |
| 185 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); | |
| 186 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); | |
| 187 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | |
| 188 } | |
| 189 | |
| 190 void EnableDisableTest(GLenum cap, bool enable, bool expect_set) { | |
| 191 if (expect_set) { | |
| 192 SetupExpectationsForEnableDisable(cap, enable); | |
| 193 } | |
| 194 if (enable) { | |
| 195 Enable cmd; | |
| 196 cmd.Init(cap); | |
| 197 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | |
| 198 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | |
| 199 } else { | |
| 200 Disable cmd; | |
| 201 cmd.Init(cap); | |
| 202 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | |
| 203 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | |
| 204 } | |
| 205 } | |
| 206 }; | 141 }; |
| 207 | 142 |
| 208 class GLES2DecoderCompressedFormatsTest : public GLES2DecoderManualInitTest { | 143 class GLES2DecoderCompressedFormatsTest : public GLES2DecoderManualInitTest { |
| 209 public: | 144 public: |
| 210 GLES2DecoderCompressedFormatsTest() { } | 145 GLES2DecoderCompressedFormatsTest() { } |
| 211 | 146 |
| 212 static bool ValueInArray(GLint value, GLint* array, GLint count) { | 147 static bool ValueInArray(GLint value, GLint* array, GLint count) { |
| 213 for (GLint ii = 0; ii < count; ++ii) { | 148 for (GLint ii = 0; ii < count; ++ii) { |
| 214 if (array[ii] == value) { | 149 if (array[ii] == value) { |
| 215 return true; | 150 return true; |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 state->texture_units[tt].bound_texture_cube_map = ref_cube_map; | 234 state->texture_units[tt].bound_texture_cube_map = ref_cube_map; |
| 300 TextureRef* ref_2d = | 235 TextureRef* ref_2d = |
| 301 (tt == non_default_unit) | 236 (tt == non_default_unit) |
| 302 ? group().texture_manager()->GetTexture(client_texture_id_) | 237 ? group().texture_manager()->GetTexture(client_texture_id_) |
| 303 : group().texture_manager()->GetDefaultTextureInfo(GL_TEXTURE_2D); | 238 : group().texture_manager()->GetDefaultTextureInfo(GL_TEXTURE_2D); |
| 304 state->texture_units[tt].bound_texture_2d = ref_2d; | 239 state->texture_units[tt].bound_texture_2d = ref_2d; |
| 305 } | 240 } |
| 306 state->active_texture_unit = active_unit; | 241 state->active_texture_unit = active_unit; |
| 307 } | 242 } |
| 308 | 243 |
| 309 TEST_P(GLES2DecoderWithShaderTest, DrawArraysNoAttributesSucceeds) { | 244 TEST_F(GLES2DecoderWithShaderTest, DrawArraysNoAttributesSucceeds) { |
| 310 SetupTexture(); | 245 SetupTexture(); |
| 311 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); | 246 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); |
| 312 SetupExpectationsForApplyingDefaultDirtyState(); | 247 SetupExpectationsForApplyingDefaultDirtyState(); |
| 313 | 248 |
| 314 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 249 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 315 .Times(1) | 250 .Times(1) |
| 316 .RetiresOnSaturation(); | 251 .RetiresOnSaturation(); |
| 317 DrawArrays cmd; | 252 DrawArrays cmd; |
| 318 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 253 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 319 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 254 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 320 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 255 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 321 } | 256 } |
| 322 | 257 |
| 323 // Tests when the math overflows (0x40000000 * sizeof GLfloat) | 258 // Tests when the math overflows (0x40000000 * sizeof GLfloat) |
| 324 TEST_P(GLES2DecoderWithShaderTest, DrawArraysSimulatedAttrib0OverflowFails) { | 259 TEST_F(GLES2DecoderWithShaderTest, DrawArraysSimulatedAttrib0OverflowFails) { |
| 325 const GLsizei kLargeCount = 0x40000000; | 260 const GLsizei kLargeCount = 0x40000000; |
| 326 SetupTexture(); | 261 SetupTexture(); |
| 327 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) | 262 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) |
| 328 .Times(0) | 263 .Times(0) |
| 329 .RetiresOnSaturation(); | 264 .RetiresOnSaturation(); |
| 330 DrawArrays cmd; | 265 DrawArrays cmd; |
| 331 cmd.Init(GL_TRIANGLES, 0, kLargeCount); | 266 cmd.Init(GL_TRIANGLES, 0, kLargeCount); |
| 332 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 267 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 333 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 268 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 334 EXPECT_FALSE(GetDecoder()->WasContextLost()); | 269 EXPECT_FALSE(GetDecoder()->WasContextLost()); |
| 335 } | 270 } |
| 336 | 271 |
| 337 // Tests when the math overflows (0x7FFFFFFF + 1 = 0x8000000 verts) | 272 // Tests when the math overflows (0x7FFFFFFF + 1 = 0x8000000 verts) |
| 338 TEST_P(GLES2DecoderWithShaderTest, DrawArraysSimulatedAttrib0PosToNegFails) { | 273 TEST_F(GLES2DecoderWithShaderTest, DrawArraysSimulatedAttrib0PosToNegFails) { |
| 339 const GLsizei kLargeCount = 0x7FFFFFFF; | 274 const GLsizei kLargeCount = 0x7FFFFFFF; |
| 340 SetupTexture(); | 275 SetupTexture(); |
| 341 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) | 276 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) |
| 342 .Times(0) | 277 .Times(0) |
| 343 .RetiresOnSaturation(); | 278 .RetiresOnSaturation(); |
| 344 DrawArrays cmd; | 279 DrawArrays cmd; |
| 345 cmd.Init(GL_TRIANGLES, 0, kLargeCount); | 280 cmd.Init(GL_TRIANGLES, 0, kLargeCount); |
| 346 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 281 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 347 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 282 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 348 EXPECT_FALSE(GetDecoder()->WasContextLost()); | 283 EXPECT_FALSE(GetDecoder()->WasContextLost()); |
| 349 } | 284 } |
| 350 | 285 |
| 351 // Tests when the driver returns an error | 286 // Tests when the driver returns an error |
| 352 TEST_P(GLES2DecoderWithShaderTest, DrawArraysSimulatedAttrib0OOMFails) { | 287 TEST_F(GLES2DecoderWithShaderTest, DrawArraysSimulatedAttrib0OOMFails) { |
| 353 const GLsizei kFakeLargeCount = 0x1234; | 288 const GLsizei kFakeLargeCount = 0x1234; |
| 354 SetupTexture(); | 289 SetupTexture(); |
| 355 AddExpectationsForSimulatedAttrib0WithError( | 290 AddExpectationsForSimulatedAttrib0WithError( |
| 356 kFakeLargeCount, 0, GL_OUT_OF_MEMORY); | 291 kFakeLargeCount, 0, GL_OUT_OF_MEMORY); |
| 357 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) | 292 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) |
| 358 .Times(0) | 293 .Times(0) |
| 359 .RetiresOnSaturation(); | 294 .RetiresOnSaturation(); |
| 360 DrawArrays cmd; | 295 DrawArrays cmd; |
| 361 cmd.Init(GL_TRIANGLES, 0, kFakeLargeCount); | 296 cmd.Init(GL_TRIANGLES, 0, kFakeLargeCount); |
| 362 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 297 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 363 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 298 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 364 EXPECT_FALSE(GetDecoder()->WasContextLost()); | 299 EXPECT_FALSE(GetDecoder()->WasContextLost()); |
| 365 } | 300 } |
| 366 | 301 |
| 367 // Test that we lose context. | 302 // Test that we lose context. |
| 368 TEST_P(GLES2DecoderManualInitTest, LoseContextWhenOOM) { | 303 TEST_F(GLES2DecoderManualInitTest, LoseContextWhenOOM) { |
| 369 InitState init; | 304 InitState init; |
| 370 init.gl_version = "3.0"; | 305 init.gl_version = "3.0"; |
| 371 init.has_alpha = true; | 306 init.has_alpha = true; |
| 372 init.has_depth = true; | 307 init.has_depth = true; |
| 373 init.request_alpha = true; | 308 init.request_alpha = true; |
| 374 init.request_depth = true; | 309 init.request_depth = true; |
| 375 init.bind_generates_resource = true; | 310 init.bind_generates_resource = true; |
| 376 init.lose_context_when_out_of_memory = true; | 311 init.lose_context_when_out_of_memory = true; |
| 377 InitDecoder(init); | 312 InitDecoder(init); |
| 378 SetupDefaultProgram(); | 313 SetupDefaultProgram(); |
| 379 | 314 |
| 380 const GLsizei kFakeLargeCount = 0x1234; | 315 const GLsizei kFakeLargeCount = 0x1234; |
| 381 SetupTexture(); | 316 SetupTexture(); |
| 382 AddExpectationsForSimulatedAttrib0WithError( | 317 AddExpectationsForSimulatedAttrib0WithError( |
| 383 kFakeLargeCount, 0, GL_OUT_OF_MEMORY); | 318 kFakeLargeCount, 0, GL_OUT_OF_MEMORY); |
| 384 EXPECT_CALL(*gl_, DrawArrays(_, _, _)).Times(0).RetiresOnSaturation(); | 319 EXPECT_CALL(*gl_, DrawArrays(_, _, _)).Times(0).RetiresOnSaturation(); |
| 385 // Other contexts in the group should be lost also. | 320 // Other contexts in the group should be lost also. |
| 386 EXPECT_CALL(*mock_decoder_, LoseContext(GL_UNKNOWN_CONTEXT_RESET_ARB)) | 321 EXPECT_CALL(*mock_decoder_, LoseContext(GL_UNKNOWN_CONTEXT_RESET_ARB)) |
| 387 .Times(1) | 322 .Times(1) |
| 388 .RetiresOnSaturation(); | 323 .RetiresOnSaturation(); |
| 389 DrawArrays cmd; | 324 DrawArrays cmd; |
| 390 cmd.Init(GL_TRIANGLES, 0, kFakeLargeCount); | 325 cmd.Init(GL_TRIANGLES, 0, kFakeLargeCount); |
| 391 // This context should be lost. | 326 // This context should be lost. |
| 392 EXPECT_EQ(error::kLostContext, ExecuteCmd(cmd)); | 327 EXPECT_EQ(error::kLostContext, ExecuteCmd(cmd)); |
| 393 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 328 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 394 EXPECT_TRUE(decoder_->WasContextLost()); | 329 EXPECT_TRUE(decoder_->WasContextLost()); |
| 395 } | 330 } |
| 396 | 331 |
| 397 TEST_P(GLES2DecoderWithShaderTest, DrawArraysBadTextureUsesBlack) { | 332 TEST_F(GLES2DecoderWithShaderTest, DrawArraysBadTextureUsesBlack) { |
| 398 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 333 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 399 // This is an NPOT texture. As the default filtering requires mips | 334 // This is an NPOT texture. As the default filtering requires mips |
| 400 // this should trigger replacing with black textures before rendering. | 335 // this should trigger replacing with black textures before rendering. |
| 401 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 336 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 402 kSharedMemoryId, kSharedMemoryOffset); | 337 kSharedMemoryId, kSharedMemoryOffset); |
| 403 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); | 338 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); |
| 404 { | 339 { |
| 405 InSequence sequence; | 340 InSequence sequence; |
| 406 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE0)) | 341 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE0)) |
| 407 .Times(1) | 342 .Times(1) |
| (...skipping 15 matching lines...) Expand all Loading... |
| 423 .Times(1) | 358 .Times(1) |
| 424 .RetiresOnSaturation(); | 359 .RetiresOnSaturation(); |
| 425 } | 360 } |
| 426 SetupExpectationsForApplyingDefaultDirtyState(); | 361 SetupExpectationsForApplyingDefaultDirtyState(); |
| 427 DrawArrays cmd; | 362 DrawArrays cmd; |
| 428 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 363 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 429 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 364 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 430 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 365 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 431 } | 366 } |
| 432 | 367 |
| 433 TEST_P(GLES2DecoderWithShaderTest, DrawArraysMissingAttributesFails) { | 368 TEST_F(GLES2DecoderWithShaderTest, DrawArraysMissingAttributesFails) { |
| 434 DoEnableVertexAttribArray(1); | 369 DoEnableVertexAttribArray(1); |
| 435 | 370 |
| 436 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) | 371 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) |
| 437 .Times(0); | 372 .Times(0); |
| 438 DrawArrays cmd; | 373 DrawArrays cmd; |
| 439 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 374 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 440 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 375 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 441 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 376 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 442 } | 377 } |
| 443 | 378 |
| 444 TEST_P(GLES2DecoderWithShaderTest, | 379 TEST_F(GLES2DecoderWithShaderTest, |
| 445 DrawArraysMissingAttributesZeroCountSucceeds) { | 380 DrawArraysMissingAttributesZeroCountSucceeds) { |
| 446 DoEnableVertexAttribArray(1); | 381 DoEnableVertexAttribArray(1); |
| 447 | 382 |
| 448 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) | 383 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) |
| 449 .Times(0); | 384 .Times(0); |
| 450 DrawArrays cmd; | 385 DrawArrays cmd; |
| 451 cmd.Init(GL_TRIANGLES, 0, 0); | 386 cmd.Init(GL_TRIANGLES, 0, 0); |
| 452 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 387 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 453 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 388 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 454 } | 389 } |
| 455 | 390 |
| 456 TEST_P(GLES2DecoderWithShaderTest, DrawArraysValidAttributesSucceeds) { | 391 TEST_F(GLES2DecoderWithShaderTest, DrawArraysValidAttributesSucceeds) { |
| 457 SetupTexture(); | 392 SetupTexture(); |
| 458 SetupVertexBuffer(); | 393 SetupVertexBuffer(); |
| 459 DoEnableVertexAttribArray(1); | 394 DoEnableVertexAttribArray(1); |
| 460 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 395 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 461 AddExpectationsForSimulatedAttrib0(kNumVertices, kServiceBufferId); | 396 AddExpectationsForSimulatedAttrib0(kNumVertices, kServiceBufferId); |
| 462 SetupExpectationsForApplyingDefaultDirtyState(); | 397 SetupExpectationsForApplyingDefaultDirtyState(); |
| 463 | 398 |
| 464 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 399 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 465 .Times(1) | 400 .Times(1) |
| 466 .RetiresOnSaturation(); | 401 .RetiresOnSaturation(); |
| 467 DrawArrays cmd; | 402 DrawArrays cmd; |
| 468 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 403 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 469 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 404 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 470 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 405 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 471 } | 406 } |
| 472 | 407 |
| 473 // Same as DrawArraysValidAttributesSucceeds, but with workaround | 408 // Same as DrawArraysValidAttributesSucceeds, but with workaround |
| 474 // |init_vertex_attributes|. | 409 // |init_vertex_attributes|. |
| 475 TEST_P(GLES2DecoderManualInitTest, InitVertexAttributes) { | 410 TEST_F(GLES2DecoderManualInitTest, InitVertexAttributes) { |
| 476 CommandLine command_line(0, NULL); | 411 CommandLine command_line(0, NULL); |
| 477 command_line.AppendSwitchASCII( | 412 command_line.AppendSwitchASCII( |
| 478 switches::kGpuDriverBugWorkarounds, | 413 switches::kGpuDriverBugWorkarounds, |
| 479 base::IntToString(gpu::INIT_VERTEX_ATTRIBUTES)); | 414 base::IntToString(gpu::INIT_VERTEX_ATTRIBUTES)); |
| 480 InitState init; | 415 InitState init; |
| 481 init.gl_version = "3.0"; | 416 init.gl_version = "3.0"; |
| 482 init.has_alpha = true; | 417 init.has_alpha = true; |
| 483 init.has_depth = true; | 418 init.has_depth = true; |
| 484 init.request_alpha = true; | 419 init.request_alpha = true; |
| 485 init.request_depth = true; | 420 init.request_depth = true; |
| 486 init.bind_generates_resource = true; | 421 init.bind_generates_resource = true; |
| 487 InitDecoderWithCommandLine(init, &command_line); | 422 InitDecoderWithCommandLine(init, &command_line); |
| 488 SetupDefaultProgram(); | 423 SetupDefaultProgram(); |
| 489 SetupTexture(); | 424 SetupTexture(); |
| 490 SetupVertexBuffer(); | 425 SetupVertexBuffer(); |
| 491 DoEnableVertexAttribArray(1); | 426 DoEnableVertexAttribArray(1); |
| 492 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 427 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 493 AddExpectationsForSimulatedAttrib0(kNumVertices, kServiceBufferId); | 428 AddExpectationsForSimulatedAttrib0(kNumVertices, kServiceBufferId); |
| 494 SetupExpectationsForApplyingDefaultDirtyState(); | 429 SetupExpectationsForApplyingDefaultDirtyState(); |
| 495 | 430 |
| 496 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 431 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 497 .Times(1) | 432 .Times(1) |
| 498 .RetiresOnSaturation(); | 433 .RetiresOnSaturation(); |
| 499 DrawArrays cmd; | 434 DrawArrays cmd; |
| 500 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 435 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 501 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 436 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 502 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 437 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 503 } | 438 } |
| 504 | 439 |
| 505 TEST_P(GLES2DecoderWithShaderTest, DrawArraysDeletedBufferFails) { | 440 TEST_F(GLES2DecoderWithShaderTest, DrawArraysDeletedBufferFails) { |
| 506 SetupVertexBuffer(); | 441 SetupVertexBuffer(); |
| 507 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 442 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 508 DeleteVertexBuffer(); | 443 DeleteVertexBuffer(); |
| 509 | 444 |
| 510 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) | 445 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) |
| 511 .Times(0); | 446 .Times(0); |
| 512 DrawArrays cmd; | 447 DrawArrays cmd; |
| 513 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 448 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 514 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 449 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 515 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 450 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 516 } | 451 } |
| 517 | 452 |
| 518 TEST_P(GLES2DecoderWithShaderTest, DrawArraysDeletedProgramSucceeds) { | 453 TEST_F(GLES2DecoderWithShaderTest, DrawArraysDeletedProgramSucceeds) { |
| 519 SetupTexture(); | 454 SetupTexture(); |
| 520 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); | 455 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); |
| 521 SetupExpectationsForApplyingDefaultDirtyState(); | 456 SetupExpectationsForApplyingDefaultDirtyState(); |
| 522 DoDeleteProgram(client_program_id_, kServiceProgramId); | 457 DoDeleteProgram(client_program_id_, kServiceProgramId); |
| 523 | 458 |
| 524 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) | 459 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) |
| 525 .Times(1) | 460 .Times(1) |
| 526 .RetiresOnSaturation(); | 461 .RetiresOnSaturation(); |
| 527 EXPECT_CALL(*gl_, DeleteProgram(kServiceProgramId)) | 462 EXPECT_CALL(*gl_, DeleteProgram(kServiceProgramId)) |
| 528 .Times(1); | 463 .Times(1); |
| 529 DrawArrays cmd; | 464 DrawArrays cmd; |
| 530 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 465 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 531 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 466 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 532 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 467 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 533 } | 468 } |
| 534 | 469 |
| 535 TEST_P(GLES2DecoderWithShaderTest, DrawArraysWithInvalidModeFails) { | 470 TEST_F(GLES2DecoderWithShaderTest, DrawArraysWithInvalidModeFails) { |
| 536 SetupVertexBuffer(); | 471 SetupVertexBuffer(); |
| 537 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 472 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 538 | 473 |
| 539 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) | 474 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) |
| 540 .Times(0); | 475 .Times(0); |
| 541 DrawArrays cmd; | 476 DrawArrays cmd; |
| 542 cmd.Init(GL_QUADS, 0, 1); | 477 cmd.Init(GL_QUADS, 0, 1); |
| 543 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 478 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 544 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 479 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 545 cmd.Init(GL_POLYGON, 0, 1); | 480 cmd.Init(GL_POLYGON, 0, 1); |
| 546 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 481 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 547 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 482 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 548 } | 483 } |
| 549 | 484 |
| 550 TEST_P(GLES2DecoderWithShaderTest, DrawArraysInvalidCountFails) { | 485 TEST_F(GLES2DecoderWithShaderTest, DrawArraysInvalidCountFails) { |
| 551 SetupVertexBuffer(); | 486 SetupVertexBuffer(); |
| 552 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 487 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 553 | 488 |
| 554 // Try start > 0 | 489 // Try start > 0 |
| 555 EXPECT_CALL(*gl_, DrawArrays(_, _, _)).Times(0); | 490 EXPECT_CALL(*gl_, DrawArrays(_, _, _)).Times(0); |
| 556 DrawArrays cmd; | 491 DrawArrays cmd; |
| 557 cmd.Init(GL_TRIANGLES, 1, kNumVertices); | 492 cmd.Init(GL_TRIANGLES, 1, kNumVertices); |
| 558 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 493 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 559 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 494 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 560 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 495 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 578 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 513 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 579 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 514 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 580 | 515 |
| 581 // Try with stride > 8 (vec2 + vec2 byte) | 516 // Try with stride > 8 (vec2 + vec2 byte) |
| 582 DoVertexAttribPointer(1, 2, GL_FLOAT, sizeof(GLfloat) * 3, 0); | 517 DoVertexAttribPointer(1, 2, GL_FLOAT, sizeof(GLfloat) * 3, 0); |
| 583 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 518 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 584 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 519 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 585 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 520 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 586 } | 521 } |
| 587 | 522 |
| 588 TEST_P(GLES2DecoderWithShaderTest, DrawArraysInstancedANGLEFails) { | 523 TEST_F(GLES2DecoderWithShaderTest, DrawArraysInstancedANGLEFails) { |
| 589 SetupTexture(); | 524 SetupTexture(); |
| 590 SetupVertexBuffer(); | 525 SetupVertexBuffer(); |
| 591 DoEnableVertexAttribArray(1); | 526 DoEnableVertexAttribArray(1); |
| 592 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 527 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 593 | 528 |
| 594 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) | 529 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) |
| 595 .Times(0) | 530 .Times(0) |
| 596 .RetiresOnSaturation(); | 531 .RetiresOnSaturation(); |
| 597 DrawArraysInstancedANGLE cmd; | 532 DrawArraysInstancedANGLE cmd; |
| 598 cmd.Init(GL_TRIANGLES, 0, kNumVertices, 1); | 533 cmd.Init(GL_TRIANGLES, 0, kNumVertices, 1); |
| 599 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 534 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 600 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 535 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 601 } | 536 } |
| 602 | 537 |
| 603 TEST_P(GLES2DecoderGeometryInstancingTest, | 538 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 604 DrawArraysInstancedANGLENoAttributesFails) { | 539 DrawArraysInstancedANGLENoAttributesFails) { |
| 605 SetupTexture(); | 540 SetupTexture(); |
| 606 | 541 |
| 607 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) | 542 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) |
| 608 .Times(0) | 543 .Times(0) |
| 609 .RetiresOnSaturation(); | 544 .RetiresOnSaturation(); |
| 610 DrawArraysInstancedANGLE cmd; | 545 DrawArraysInstancedANGLE cmd; |
| 611 cmd.Init(GL_TRIANGLES, 0, kNumVertices, 1); | 546 cmd.Init(GL_TRIANGLES, 0, kNumVertices, 1); |
| 612 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 547 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 613 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 548 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 614 } | 549 } |
| 615 | 550 |
| 616 TEST_P(GLES2DecoderGeometryInstancingTest, | 551 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 617 DrawArraysInstancedANGLESimulatedAttrib0) { | 552 DrawArraysInstancedANGLESimulatedAttrib0) { |
| 618 SetupTexture(); | 553 SetupTexture(); |
| 619 SetupVertexBuffer(); | 554 SetupVertexBuffer(); |
| 620 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 555 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 621 | 556 |
| 622 AddExpectationsForSimulatedAttrib0(kNumVertices, kServiceBufferId); | 557 AddExpectationsForSimulatedAttrib0(kNumVertices, kServiceBufferId); |
| 623 SetupExpectationsForApplyingDefaultDirtyState(); | 558 SetupExpectationsForApplyingDefaultDirtyState(); |
| 624 | 559 |
| 625 DoVertexAttribDivisorANGLE(0, 1); | 560 DoVertexAttribDivisorANGLE(0, 1); |
| 626 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(GL_TRIANGLES, 0, kNumVertices, 3)) | 561 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(GL_TRIANGLES, 0, kNumVertices, 3)) |
| 627 .Times(1) | 562 .Times(1) |
| 628 .RetiresOnSaturation(); | 563 .RetiresOnSaturation(); |
| 629 EXPECT_CALL(*gl_, VertexAttribDivisorANGLE(0, 0)) | 564 EXPECT_CALL(*gl_, VertexAttribDivisorANGLE(0, 0)) |
| 630 .Times(1) | 565 .Times(1) |
| 631 .RetiresOnSaturation(); | 566 .RetiresOnSaturation(); |
| 632 EXPECT_CALL(*gl_, VertexAttribDivisorANGLE(0, 1)) | 567 EXPECT_CALL(*gl_, VertexAttribDivisorANGLE(0, 1)) |
| 633 .Times(1) | 568 .Times(1) |
| 634 .RetiresOnSaturation(); | 569 .RetiresOnSaturation(); |
| 635 DrawArraysInstancedANGLE cmd; | 570 DrawArraysInstancedANGLE cmd; |
| 636 cmd.Init(GL_TRIANGLES, 0, kNumVertices, 3); | 571 cmd.Init(GL_TRIANGLES, 0, kNumVertices, 3); |
| 637 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 572 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 638 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 573 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 639 } | 574 } |
| 640 | 575 |
| 641 TEST_P(GLES2DecoderGeometryInstancingTest, | 576 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 642 DrawArraysInstancedANGLEMissingAttributesFails) { | 577 DrawArraysInstancedANGLEMissingAttributesFails) { |
| 643 DoEnableVertexAttribArray(1); | 578 DoEnableVertexAttribArray(1); |
| 644 | 579 |
| 645 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) | 580 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) |
| 646 .Times(0); | 581 .Times(0); |
| 647 DrawArraysInstancedANGLE cmd; | 582 DrawArraysInstancedANGLE cmd; |
| 648 cmd.Init(GL_TRIANGLES, 0, kNumVertices, 1); | 583 cmd.Init(GL_TRIANGLES, 0, kNumVertices, 1); |
| 649 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 584 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 650 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 585 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 651 } | 586 } |
| 652 | 587 |
| 653 TEST_P(GLES2DecoderGeometryInstancingTest, | 588 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 654 DrawArraysInstancedANGLEMissingAttributesZeroCountSucceeds) { | 589 DrawArraysInstancedANGLEMissingAttributesZeroCountSucceeds) { |
| 655 DoEnableVertexAttribArray(1); | 590 DoEnableVertexAttribArray(1); |
| 656 | 591 |
| 657 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) | 592 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) |
| 658 .Times(0); | 593 .Times(0); |
| 659 DrawArraysInstancedANGLE cmd; | 594 DrawArraysInstancedANGLE cmd; |
| 660 cmd.Init(GL_TRIANGLES, 0, 0, 1); | 595 cmd.Init(GL_TRIANGLES, 0, 0, 1); |
| 661 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 596 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 662 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 597 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 663 } | 598 } |
| 664 | 599 |
| 665 TEST_P(GLES2DecoderGeometryInstancingTest, | 600 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 666 DrawArraysInstancedANGLEValidAttributesSucceeds) { | 601 DrawArraysInstancedANGLEValidAttributesSucceeds) { |
| 667 SetupTexture(); | 602 SetupTexture(); |
| 668 SetupVertexBuffer(); | 603 SetupVertexBuffer(); |
| 669 DoEnableVertexAttribArray(1); | 604 DoEnableVertexAttribArray(1); |
| 670 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 605 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 671 AddExpectationsForSimulatedAttrib0(kNumVertices, kServiceBufferId); | 606 AddExpectationsForSimulatedAttrib0(kNumVertices, kServiceBufferId); |
| 672 SetupExpectationsForApplyingDefaultDirtyState(); | 607 SetupExpectationsForApplyingDefaultDirtyState(); |
| 673 | 608 |
| 674 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(GL_TRIANGLES, 0, kNumVertices, 1)) | 609 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(GL_TRIANGLES, 0, kNumVertices, 1)) |
| 675 .Times(1) | 610 .Times(1) |
| 676 .RetiresOnSaturation(); | 611 .RetiresOnSaturation(); |
| 677 DrawArraysInstancedANGLE cmd; | 612 DrawArraysInstancedANGLE cmd; |
| 678 cmd.Init(GL_TRIANGLES, 0, kNumVertices, 1); | 613 cmd.Init(GL_TRIANGLES, 0, kNumVertices, 1); |
| 679 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 614 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 680 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 615 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 681 } | 616 } |
| 682 | 617 |
| 683 TEST_P(GLES2DecoderGeometryInstancingTest, | 618 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 684 DrawArraysInstancedANGLEWithInvalidModeFails) { | 619 DrawArraysInstancedANGLEWithInvalidModeFails) { |
| 685 SetupVertexBuffer(); | 620 SetupVertexBuffer(); |
| 686 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 621 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 687 | 622 |
| 688 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) | 623 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) |
| 689 .Times(0); | 624 .Times(0); |
| 690 DrawArraysInstancedANGLE cmd; | 625 DrawArraysInstancedANGLE cmd; |
| 691 cmd.Init(GL_QUADS, 0, 1, 1); | 626 cmd.Init(GL_QUADS, 0, 1, 1); |
| 692 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 627 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 693 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 628 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 694 cmd.Init(GL_POLYGON, 0, 1, 1); | 629 cmd.Init(GL_POLYGON, 0, 1, 1); |
| 695 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 630 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 696 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 631 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 697 } | 632 } |
| 698 | 633 |
| 699 TEST_P(GLES2DecoderGeometryInstancingTest, | 634 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 700 DrawArraysInstancedANGLEInvalidPrimcountFails) { | 635 DrawArraysInstancedANGLEInvalidPrimcountFails) { |
| 701 SetupVertexBuffer(); | 636 SetupVertexBuffer(); |
| 702 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 637 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 703 | 638 |
| 704 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) | 639 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) |
| 705 .Times(0); | 640 .Times(0); |
| 706 DrawArraysInstancedANGLE cmd; | 641 DrawArraysInstancedANGLE cmd; |
| 707 cmd.Init(GL_TRIANGLES, 0, 1, -1); | 642 cmd.Init(GL_TRIANGLES, 0, 1, -1); |
| 708 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 643 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 709 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 644 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 710 } | 645 } |
| 711 | 646 |
| 712 // Per-instance data is twice as large, but number of instances is half | 647 // Per-instance data is twice as large, but number of instances is half |
| 713 TEST_P(GLES2DecoderGeometryInstancingTest, | 648 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 714 DrawArraysInstancedANGLELargeInstanceSucceeds) { | 649 DrawArraysInstancedANGLELargeInstanceSucceeds) { |
| 715 SetupTexture(); | 650 SetupTexture(); |
| 716 SetupVertexBuffer(); | 651 SetupVertexBuffer(); |
| 717 SetupExpectationsForApplyingDefaultDirtyState(); | 652 SetupExpectationsForApplyingDefaultDirtyState(); |
| 718 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 653 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 719 | 654 |
| 720 DoEnableVertexAttribArray(0); | 655 DoEnableVertexAttribArray(0); |
| 721 DoVertexAttribPointer(0, 4, GL_FLOAT, 0, 0); | 656 DoVertexAttribPointer(0, 4, GL_FLOAT, 0, 0); |
| 722 DoVertexAttribDivisorANGLE(0, 1); | 657 DoVertexAttribDivisorANGLE(0, 1); |
| 723 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(GL_TRIANGLES, 0, kNumVertices, | 658 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(GL_TRIANGLES, 0, kNumVertices, |
| 724 kNumVertices / 2)) | 659 kNumVertices / 2)) |
| 725 .Times(1) | 660 .Times(1) |
| 726 .RetiresOnSaturation(); | 661 .RetiresOnSaturation(); |
| 727 DrawArraysInstancedANGLE cmd; | 662 DrawArraysInstancedANGLE cmd; |
| 728 cmd.Init(GL_TRIANGLES, 0, kNumVertices, kNumVertices / 2); | 663 cmd.Init(GL_TRIANGLES, 0, kNumVertices, kNumVertices / 2); |
| 729 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 664 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 730 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 665 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 731 } | 666 } |
| 732 | 667 |
| 733 // Per-instance data is twice as large, but divisor is twice | 668 // Per-instance data is twice as large, but divisor is twice |
| 734 TEST_P(GLES2DecoderGeometryInstancingTest, | 669 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 735 DrawArraysInstancedANGLELargeDivisorSucceeds) { | 670 DrawArraysInstancedANGLELargeDivisorSucceeds) { |
| 736 SetupTexture(); | 671 SetupTexture(); |
| 737 SetupVertexBuffer(); | 672 SetupVertexBuffer(); |
| 738 SetupExpectationsForApplyingDefaultDirtyState(); | 673 SetupExpectationsForApplyingDefaultDirtyState(); |
| 739 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 674 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 740 | 675 |
| 741 DoEnableVertexAttribArray(0); | 676 DoEnableVertexAttribArray(0); |
| 742 DoVertexAttribPointer(0, 4, GL_FLOAT, 0, 0); | 677 DoVertexAttribPointer(0, 4, GL_FLOAT, 0, 0); |
| 743 DoVertexAttribDivisorANGLE(0, 2); | 678 DoVertexAttribDivisorANGLE(0, 2); |
| 744 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(GL_TRIANGLES, 0, kNumVertices, | 679 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(GL_TRIANGLES, 0, kNumVertices, |
| 745 kNumVertices)) | 680 kNumVertices)) |
| 746 .Times(1) | 681 .Times(1) |
| 747 .RetiresOnSaturation(); | 682 .RetiresOnSaturation(); |
| 748 DrawArraysInstancedANGLE cmd; | 683 DrawArraysInstancedANGLE cmd; |
| 749 cmd.Init(GL_TRIANGLES, 0, kNumVertices, kNumVertices); | 684 cmd.Init(GL_TRIANGLES, 0, kNumVertices, kNumVertices); |
| 750 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 685 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 751 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 686 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 752 } | 687 } |
| 753 | 688 |
| 754 TEST_P(GLES2DecoderGeometryInstancingTest, DrawArraysInstancedANGLELargeFails) { | 689 TEST_F(GLES2DecoderGeometryInstancingTest, DrawArraysInstancedANGLELargeFails) { |
| 755 SetupTexture(); | 690 SetupTexture(); |
| 756 SetupVertexBuffer(); | 691 SetupVertexBuffer(); |
| 757 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 692 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 758 | 693 |
| 759 DoEnableVertexAttribArray(0); | 694 DoEnableVertexAttribArray(0); |
| 760 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); | 695 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); |
| 761 DoVertexAttribDivisorANGLE(0, 1); | 696 DoVertexAttribDivisorANGLE(0, 1); |
| 762 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) | 697 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) |
| 763 .Times(0) | 698 .Times(0) |
| 764 .RetiresOnSaturation(); | 699 .RetiresOnSaturation(); |
| 765 DrawArraysInstancedANGLE cmd; | 700 DrawArraysInstancedANGLE cmd; |
| 766 cmd.Init(GL_TRIANGLES, 0, kNumVertices, kNumVertices + 1); | 701 cmd.Init(GL_TRIANGLES, 0, kNumVertices, kNumVertices + 1); |
| 767 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 702 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 768 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 703 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 769 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 704 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 770 | 705 |
| 771 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) | 706 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) |
| 772 .Times(0) | 707 .Times(0) |
| 773 .RetiresOnSaturation(); | 708 .RetiresOnSaturation(); |
| 774 cmd.Init(GL_TRIANGLES, 0, kNumVertices + 1, kNumVertices); | 709 cmd.Init(GL_TRIANGLES, 0, kNumVertices + 1, kNumVertices); |
| 775 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 710 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 776 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 711 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 777 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 712 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 778 } | 713 } |
| 779 | 714 |
| 780 // Per-index data is twice as large, but number of indices is half | 715 // Per-index data is twice as large, but number of indices is half |
| 781 TEST_P(GLES2DecoderGeometryInstancingTest, | 716 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 782 DrawArraysInstancedANGLELargeIndexSucceeds) { | 717 DrawArraysInstancedANGLELargeIndexSucceeds) { |
| 783 SetupTexture(); | 718 SetupTexture(); |
| 784 SetupVertexBuffer(); | 719 SetupVertexBuffer(); |
| 785 SetupExpectationsForApplyingDefaultDirtyState(); | 720 SetupExpectationsForApplyingDefaultDirtyState(); |
| 786 DoVertexAttribPointer(1, 4, GL_FLOAT, 0, 0); | 721 DoVertexAttribPointer(1, 4, GL_FLOAT, 0, 0); |
| 787 | 722 |
| 788 DoEnableVertexAttribArray(0); | 723 DoEnableVertexAttribArray(0); |
| 789 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); | 724 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); |
| 790 DoVertexAttribDivisorANGLE(0, 1); | 725 DoVertexAttribDivisorANGLE(0, 1); |
| 791 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(GL_TRIANGLES, 0, kNumVertices / 2, | 726 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(GL_TRIANGLES, 0, kNumVertices / 2, |
| 792 kNumVertices)) | 727 kNumVertices)) |
| 793 .Times(1) | 728 .Times(1) |
| 794 .RetiresOnSaturation(); | 729 .RetiresOnSaturation(); |
| 795 DrawArraysInstancedANGLE cmd; | 730 DrawArraysInstancedANGLE cmd; |
| 796 cmd.Init(GL_TRIANGLES, 0, kNumVertices / 2, kNumVertices); | 731 cmd.Init(GL_TRIANGLES, 0, kNumVertices / 2, kNumVertices); |
| 797 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 732 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 798 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 733 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 799 } | 734 } |
| 800 | 735 |
| 801 TEST_P(GLES2DecoderGeometryInstancingTest, | 736 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 802 DrawArraysInstancedANGLENoDivisor0Fails) { | 737 DrawArraysInstancedANGLENoDivisor0Fails) { |
| 803 SetupTexture(); | 738 SetupTexture(); |
| 804 SetupVertexBuffer(); | 739 SetupVertexBuffer(); |
| 805 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 740 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 806 | 741 |
| 807 DoEnableVertexAttribArray(0); | 742 DoEnableVertexAttribArray(0); |
| 808 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); | 743 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); |
| 809 DoVertexAttribDivisorANGLE(0, 1); | 744 DoVertexAttribDivisorANGLE(0, 1); |
| 810 DoVertexAttribDivisorANGLE(1, 1); | 745 DoVertexAttribDivisorANGLE(1, 1); |
| 811 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) | 746 EXPECT_CALL(*gl_, DrawArraysInstancedANGLE(_, _, _, _)) |
| 812 .Times(0) | 747 .Times(0) |
| 813 .RetiresOnSaturation(); | 748 .RetiresOnSaturation(); |
| 814 DrawArraysInstancedANGLE cmd; | 749 DrawArraysInstancedANGLE cmd; |
| 815 cmd.Init(GL_TRIANGLES, 0, kNumVertices, 1); | 750 cmd.Init(GL_TRIANGLES, 0, kNumVertices, 1); |
| 816 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 751 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 817 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 752 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 818 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 753 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 819 } | 754 } |
| 820 | 755 |
| 821 TEST_P(GLES2DecoderWithShaderTest, DrawElementsNoAttributesSucceeds) { | 756 TEST_F(GLES2DecoderWithShaderTest, DrawElementsNoAttributesSucceeds) { |
| 822 SetupTexture(); | 757 SetupTexture(); |
| 823 SetupIndexBuffer(); | 758 SetupIndexBuffer(); |
| 824 AddExpectationsForSimulatedAttrib0(kMaxValidIndex + 1, 0); | 759 AddExpectationsForSimulatedAttrib0(kMaxValidIndex + 1, 0); |
| 825 SetupExpectationsForApplyingDefaultDirtyState(); | 760 SetupExpectationsForApplyingDefaultDirtyState(); |
| 826 EXPECT_CALL(*gl_, DrawElements(GL_TRIANGLES, kValidIndexRangeCount, | 761 EXPECT_CALL(*gl_, DrawElements(GL_TRIANGLES, kValidIndexRangeCount, |
| 827 GL_UNSIGNED_SHORT, | 762 GL_UNSIGNED_SHORT, |
| 828 BufferOffset(kValidIndexRangeStart * 2))) | 763 BufferOffset(kValidIndexRangeStart * 2))) |
| 829 .Times(1) | 764 .Times(1) |
| 830 .RetiresOnSaturation(); | 765 .RetiresOnSaturation(); |
| 831 DrawElements cmd; | 766 DrawElements cmd; |
| 832 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 767 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 833 kValidIndexRangeStart * 2); | 768 kValidIndexRangeStart * 2); |
| 834 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 769 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 835 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 770 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 836 } | 771 } |
| 837 | 772 |
| 838 TEST_P(GLES2DecoderWithShaderTest, DrawElementsMissingAttributesFails) { | 773 TEST_F(GLES2DecoderWithShaderTest, DrawElementsMissingAttributesFails) { |
| 839 SetupIndexBuffer(); | 774 SetupIndexBuffer(); |
| 840 DoEnableVertexAttribArray(1); | 775 DoEnableVertexAttribArray(1); |
| 841 | 776 |
| 842 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)) | 777 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)) |
| 843 .Times(0); | 778 .Times(0); |
| 844 DrawElements cmd; | 779 DrawElements cmd; |
| 845 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 780 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 846 kValidIndexRangeStart * 2); | 781 kValidIndexRangeStart * 2); |
| 847 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 782 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 848 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 783 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 849 } | 784 } |
| 850 | 785 |
| 851 TEST_P(GLES2DecoderWithShaderTest, | 786 TEST_F(GLES2DecoderWithShaderTest, |
| 852 DrawElementsMissingAttributesZeroCountSucceeds) { | 787 DrawElementsMissingAttributesZeroCountSucceeds) { |
| 853 SetupIndexBuffer(); | 788 SetupIndexBuffer(); |
| 854 DoEnableVertexAttribArray(1); | 789 DoEnableVertexAttribArray(1); |
| 855 | 790 |
| 856 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)) | 791 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)) |
| 857 .Times(0); | 792 .Times(0); |
| 858 DrawElements cmd; | 793 DrawElements cmd; |
| 859 cmd.Init(GL_TRIANGLES, 0, GL_UNSIGNED_SHORT, | 794 cmd.Init(GL_TRIANGLES, 0, GL_UNSIGNED_SHORT, |
| 860 kValidIndexRangeStart * 2); | 795 kValidIndexRangeStart * 2); |
| 861 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 796 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 862 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 797 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 863 } | 798 } |
| 864 | 799 |
| 865 TEST_P(GLES2DecoderWithShaderTest, DrawElementsExtraAttributesFails) { | 800 TEST_F(GLES2DecoderWithShaderTest, DrawElementsExtraAttributesFails) { |
| 866 SetupIndexBuffer(); | 801 SetupIndexBuffer(); |
| 867 DoEnableVertexAttribArray(6); | 802 DoEnableVertexAttribArray(6); |
| 868 | 803 |
| 869 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)) | 804 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)) |
| 870 .Times(0); | 805 .Times(0); |
| 871 DrawElements cmd; | 806 DrawElements cmd; |
| 872 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 807 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 873 kValidIndexRangeStart * 2); | 808 kValidIndexRangeStart * 2); |
| 874 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 809 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 875 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 810 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 876 } | 811 } |
| 877 | 812 |
| 878 TEST_P(GLES2DecoderWithShaderTest, DrawElementsValidAttributesSucceeds) { | 813 TEST_F(GLES2DecoderWithShaderTest, DrawElementsValidAttributesSucceeds) { |
| 879 SetupTexture(); | 814 SetupTexture(); |
| 880 SetupVertexBuffer(); | 815 SetupVertexBuffer(); |
| 881 SetupIndexBuffer(); | 816 SetupIndexBuffer(); |
| 882 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 817 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 883 AddExpectationsForSimulatedAttrib0(kMaxValidIndex + 1, kServiceBufferId); | 818 AddExpectationsForSimulatedAttrib0(kMaxValidIndex + 1, kServiceBufferId); |
| 884 SetupExpectationsForApplyingDefaultDirtyState(); | 819 SetupExpectationsForApplyingDefaultDirtyState(); |
| 885 | 820 |
| 886 EXPECT_CALL(*gl_, DrawElements(GL_TRIANGLES, kValidIndexRangeCount, | 821 EXPECT_CALL(*gl_, DrawElements(GL_TRIANGLES, kValidIndexRangeCount, |
| 887 GL_UNSIGNED_SHORT, | 822 GL_UNSIGNED_SHORT, |
| 888 BufferOffset(kValidIndexRangeStart * 2))) | 823 BufferOffset(kValidIndexRangeStart * 2))) |
| 889 .Times(1) | 824 .Times(1) |
| 890 .RetiresOnSaturation(); | 825 .RetiresOnSaturation(); |
| 891 DrawElements cmd; | 826 DrawElements cmd; |
| 892 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 827 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 893 kValidIndexRangeStart * 2); | 828 kValidIndexRangeStart * 2); |
| 894 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 829 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 895 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 830 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 896 } | 831 } |
| 897 | 832 |
| 898 TEST_P(GLES2DecoderWithShaderTest, DrawElementsDeletedBufferFails) { | 833 TEST_F(GLES2DecoderWithShaderTest, DrawElementsDeletedBufferFails) { |
| 899 SetupVertexBuffer(); | 834 SetupVertexBuffer(); |
| 900 SetupIndexBuffer(); | 835 SetupIndexBuffer(); |
| 901 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 836 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 902 DeleteIndexBuffer(); | 837 DeleteIndexBuffer(); |
| 903 | 838 |
| 904 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)) | 839 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)) |
| 905 .Times(0); | 840 .Times(0); |
| 906 DrawElements cmd; | 841 DrawElements cmd; |
| 907 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 842 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 908 kValidIndexRangeStart * 2); | 843 kValidIndexRangeStart * 2); |
| 909 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 844 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 910 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 845 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 911 } | 846 } |
| 912 | 847 |
| 913 TEST_P(GLES2DecoderWithShaderTest, DrawElementsDeletedProgramSucceeds) { | 848 TEST_F(GLES2DecoderWithShaderTest, DrawElementsDeletedProgramSucceeds) { |
| 914 SetupTexture(); | 849 SetupTexture(); |
| 915 SetupIndexBuffer(); | 850 SetupIndexBuffer(); |
| 916 AddExpectationsForSimulatedAttrib0(kMaxValidIndex + 1, 0); | 851 AddExpectationsForSimulatedAttrib0(kMaxValidIndex + 1, 0); |
| 917 SetupExpectationsForApplyingDefaultDirtyState(); | 852 SetupExpectationsForApplyingDefaultDirtyState(); |
| 918 DoDeleteProgram(client_program_id_, kServiceProgramId); | 853 DoDeleteProgram(client_program_id_, kServiceProgramId); |
| 919 | 854 |
| 920 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)) | 855 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)) |
| 921 .Times(1); | 856 .Times(1); |
| 922 EXPECT_CALL(*gl_, DeleteProgram(kServiceProgramId)) | 857 EXPECT_CALL(*gl_, DeleteProgram(kServiceProgramId)) |
| 923 .Times(1); | 858 .Times(1); |
| 924 DrawElements cmd; | 859 DrawElements cmd; |
| 925 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 860 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 926 kValidIndexRangeStart * 2); | 861 kValidIndexRangeStart * 2); |
| 927 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 862 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 928 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 863 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 929 } | 864 } |
| 930 | 865 |
| 931 TEST_P(GLES2DecoderWithShaderTest, DrawElementsWithInvalidModeFails) { | 866 TEST_F(GLES2DecoderWithShaderTest, DrawElementsWithInvalidModeFails) { |
| 932 SetupVertexBuffer(); | 867 SetupVertexBuffer(); |
| 933 SetupIndexBuffer(); | 868 SetupIndexBuffer(); |
| 934 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 869 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 935 | 870 |
| 936 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)) | 871 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)) |
| 937 .Times(0); | 872 .Times(0); |
| 938 DrawElements cmd; | 873 DrawElements cmd; |
| 939 cmd.Init(GL_QUADS, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 874 cmd.Init(GL_QUADS, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 940 kValidIndexRangeStart * 2); | 875 kValidIndexRangeStart * 2); |
| 941 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 876 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 942 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 877 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 943 cmd.Init(GL_POLYGON, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 878 cmd.Init(GL_POLYGON, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 944 kValidIndexRangeStart); | 879 kValidIndexRangeStart); |
| 945 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 880 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 946 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 881 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 947 } | 882 } |
| 948 | 883 |
| 949 TEST_P(GLES2DecoderWithShaderTest, DrawElementsInvalidCountFails) { | 884 TEST_F(GLES2DecoderWithShaderTest, DrawElementsInvalidCountFails) { |
| 950 SetupVertexBuffer(); | 885 SetupVertexBuffer(); |
| 951 SetupIndexBuffer(); | 886 SetupIndexBuffer(); |
| 952 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 887 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 953 | 888 |
| 954 // Try start > 0 | 889 // Try start > 0 |
| 955 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)).Times(0); | 890 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)).Times(0); |
| 956 DrawElements cmd; | 891 DrawElements cmd; |
| 957 cmd.Init(GL_TRIANGLES, kNumIndices, GL_UNSIGNED_SHORT, 2); | 892 cmd.Init(GL_TRIANGLES, kNumIndices, GL_UNSIGNED_SHORT, 2); |
| 958 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 893 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 959 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 894 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 960 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 895 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 961 | 896 |
| 962 // Try with count > size | 897 // Try with count > size |
| 963 cmd.Init(GL_TRIANGLES, kNumIndices + 1, GL_UNSIGNED_SHORT, 0); | 898 cmd.Init(GL_TRIANGLES, kNumIndices + 1, GL_UNSIGNED_SHORT, 0); |
| 964 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 899 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 965 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 900 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 966 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 901 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 967 } | 902 } |
| 968 | 903 |
| 969 TEST_P(GLES2DecoderWithShaderTest, DrawElementsOutOfRangeIndicesFails) { | 904 TEST_F(GLES2DecoderWithShaderTest, DrawElementsOutOfRangeIndicesFails) { |
| 970 SetupVertexBuffer(); | 905 SetupVertexBuffer(); |
| 971 SetupIndexBuffer(); | 906 SetupIndexBuffer(); |
| 972 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 907 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 973 | 908 |
| 974 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)).Times(0); | 909 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)).Times(0); |
| 975 DrawElements cmd; | 910 DrawElements cmd; |
| 976 cmd.Init(GL_TRIANGLES, kInvalidIndexRangeCount, GL_UNSIGNED_SHORT, | 911 cmd.Init(GL_TRIANGLES, kInvalidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 977 kInvalidIndexRangeStart * 2); | 912 kInvalidIndexRangeStart * 2); |
| 978 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 913 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 979 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 914 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 980 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 915 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 981 } | 916 } |
| 982 | 917 |
| 983 TEST_P(GLES2DecoderWithShaderTest, DrawElementsOddOffsetForUint16Fails) { | 918 TEST_F(GLES2DecoderWithShaderTest, DrawElementsOddOffsetForUint16Fails) { |
| 984 SetupVertexBuffer(); | 919 SetupVertexBuffer(); |
| 985 SetupIndexBuffer(); | 920 SetupIndexBuffer(); |
| 986 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 921 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 987 | 922 |
| 988 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)).Times(0); | 923 EXPECT_CALL(*gl_, DrawElements(_, _, _, _)).Times(0); |
| 989 DrawElements cmd; | 924 DrawElements cmd; |
| 990 cmd.Init(GL_TRIANGLES, kInvalidIndexRangeCount, GL_UNSIGNED_SHORT, 1); | 925 cmd.Init(GL_TRIANGLES, kInvalidIndexRangeCount, GL_UNSIGNED_SHORT, 1); |
| 991 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 926 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 992 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 927 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 993 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 928 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 994 } | 929 } |
| 995 | 930 |
| 996 TEST_P(GLES2DecoderWithShaderTest, DrawElementsInstancedANGLEFails) { | 931 TEST_F(GLES2DecoderWithShaderTest, DrawElementsInstancedANGLEFails) { |
| 997 SetupTexture(); | 932 SetupTexture(); |
| 998 SetupVertexBuffer(); | 933 SetupVertexBuffer(); |
| 999 SetupIndexBuffer(); | 934 SetupIndexBuffer(); |
| 1000 DoEnableVertexAttribArray(1); | 935 DoEnableVertexAttribArray(1); |
| 1001 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 936 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 1002 | 937 |
| 1003 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) | 938 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) |
| 1004 .Times(0) | 939 .Times(0) |
| 1005 .RetiresOnSaturation(); | 940 .RetiresOnSaturation(); |
| 1006 DrawElementsInstancedANGLE cmd; | 941 DrawElementsInstancedANGLE cmd; |
| 1007 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 942 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 1008 kValidIndexRangeStart * 2, 1); | 943 kValidIndexRangeStart * 2, 1); |
| 1009 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 944 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1010 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 945 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1011 } | 946 } |
| 1012 | 947 |
| 1013 TEST_P(GLES2DecoderGeometryInstancingTest, | 948 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 1014 DrawElementsInstancedANGLENoAttributesFails) { | 949 DrawElementsInstancedANGLENoAttributesFails) { |
| 1015 SetupTexture(); | 950 SetupTexture(); |
| 1016 SetupIndexBuffer(); | 951 SetupIndexBuffer(); |
| 1017 | 952 |
| 1018 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) | 953 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) |
| 1019 .Times(0) | 954 .Times(0) |
| 1020 .RetiresOnSaturation(); | 955 .RetiresOnSaturation(); |
| 1021 DrawElementsInstancedANGLE cmd; | 956 DrawElementsInstancedANGLE cmd; |
| 1022 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 957 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 1023 kValidIndexRangeStart * 2, 1); | 958 kValidIndexRangeStart * 2, 1); |
| 1024 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 959 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1025 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 960 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1026 } | 961 } |
| 1027 | 962 |
| 1028 TEST_P(GLES2DecoderGeometryInstancingTest, | 963 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 1029 DrawElementsInstancedANGLESimulatedAttrib0) { | 964 DrawElementsInstancedANGLESimulatedAttrib0) { |
| 1030 SetupTexture(); | 965 SetupTexture(); |
| 1031 SetupVertexBuffer(); | 966 SetupVertexBuffer(); |
| 1032 SetupIndexBuffer(); | 967 SetupIndexBuffer(); |
| 1033 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 968 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 1034 | 969 |
| 1035 AddExpectationsForSimulatedAttrib0(kMaxValidIndex + 1, kServiceBufferId); | 970 AddExpectationsForSimulatedAttrib0(kMaxValidIndex + 1, kServiceBufferId); |
| 1036 SetupExpectationsForApplyingDefaultDirtyState(); | 971 SetupExpectationsForApplyingDefaultDirtyState(); |
| 1037 | 972 |
| 1038 DoVertexAttribDivisorANGLE(0, 1); | 973 DoVertexAttribDivisorANGLE(0, 1); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1050 EXPECT_CALL(*gl_, VertexAttribDivisorANGLE(0, 1)) | 985 EXPECT_CALL(*gl_, VertexAttribDivisorANGLE(0, 1)) |
| 1051 .Times(1) | 986 .Times(1) |
| 1052 .RetiresOnSaturation(); | 987 .RetiresOnSaturation(); |
| 1053 DrawElementsInstancedANGLE cmd; | 988 DrawElementsInstancedANGLE cmd; |
| 1054 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 989 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 1055 kValidIndexRangeStart * 2, 3); | 990 kValidIndexRangeStart * 2, 3); |
| 1056 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 991 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1057 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 992 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1058 } | 993 } |
| 1059 | 994 |
| 1060 TEST_P(GLES2DecoderGeometryInstancingTest, | 995 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 1061 DrawElementsInstancedANGLEMissingAttributesFails) { | 996 DrawElementsInstancedANGLEMissingAttributesFails) { |
| 1062 SetupIndexBuffer(); | 997 SetupIndexBuffer(); |
| 1063 DoEnableVertexAttribArray(1); | 998 DoEnableVertexAttribArray(1); |
| 1064 | 999 |
| 1065 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) | 1000 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) |
| 1066 .Times(0); | 1001 .Times(0); |
| 1067 DrawElementsInstancedANGLE cmd; | 1002 DrawElementsInstancedANGLE cmd; |
| 1068 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 1003 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 1069 kValidIndexRangeStart * 2, 1); | 1004 kValidIndexRangeStart * 2, 1); |
| 1070 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1005 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1071 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1006 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1072 } | 1007 } |
| 1073 | 1008 |
| 1074 TEST_P(GLES2DecoderGeometryInstancingTest, | 1009 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 1075 DrawElementsInstancedANGLEMissingAttributesZeroCountSucceeds) { | 1010 DrawElementsInstancedANGLEMissingAttributesZeroCountSucceeds) { |
| 1076 SetupIndexBuffer(); | 1011 SetupIndexBuffer(); |
| 1077 DoEnableVertexAttribArray(1); | 1012 DoEnableVertexAttribArray(1); |
| 1078 | 1013 |
| 1079 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) | 1014 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) |
| 1080 .Times(0); | 1015 .Times(0); |
| 1081 DrawElementsInstancedANGLE cmd; | 1016 DrawElementsInstancedANGLE cmd; |
| 1082 cmd.Init(GL_TRIANGLES, 0, GL_UNSIGNED_SHORT, | 1017 cmd.Init(GL_TRIANGLES, 0, GL_UNSIGNED_SHORT, |
| 1083 kValidIndexRangeStart * 2, 1); | 1018 kValidIndexRangeStart * 2, 1); |
| 1084 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1019 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1085 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1020 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1086 } | 1021 } |
| 1087 | 1022 |
| 1088 TEST_P(GLES2DecoderGeometryInstancingTest, | 1023 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 1089 DrawElementsInstancedANGLEValidAttributesSucceeds) { | 1024 DrawElementsInstancedANGLEValidAttributesSucceeds) { |
| 1090 SetupIndexBuffer(); | 1025 SetupIndexBuffer(); |
| 1091 SetupTexture(); | 1026 SetupTexture(); |
| 1092 SetupVertexBuffer(); | 1027 SetupVertexBuffer(); |
| 1093 DoEnableVertexAttribArray(1); | 1028 DoEnableVertexAttribArray(1); |
| 1094 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 1029 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 1095 AddExpectationsForSimulatedAttrib0(kMaxValidIndex + 1, kServiceBufferId); | 1030 AddExpectationsForSimulatedAttrib0(kMaxValidIndex + 1, kServiceBufferId); |
| 1096 SetupExpectationsForApplyingDefaultDirtyState(); | 1031 SetupExpectationsForApplyingDefaultDirtyState(); |
| 1097 | 1032 |
| 1098 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE( | 1033 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE( |
| 1099 GL_TRIANGLES, | 1034 GL_TRIANGLES, |
| 1100 kValidIndexRangeCount, | 1035 kValidIndexRangeCount, |
| 1101 GL_UNSIGNED_SHORT, | 1036 GL_UNSIGNED_SHORT, |
| 1102 BufferOffset(kValidIndexRangeStart * 2), | 1037 BufferOffset(kValidIndexRangeStart * 2), |
| 1103 1)) | 1038 1)) |
| 1104 .Times(1) | 1039 .Times(1) |
| 1105 .RetiresOnSaturation(); | 1040 .RetiresOnSaturation(); |
| 1106 DrawElementsInstancedANGLE cmd; | 1041 DrawElementsInstancedANGLE cmd; |
| 1107 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 1042 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 1108 kValidIndexRangeStart * 2, 1); | 1043 kValidIndexRangeStart * 2, 1); |
| 1109 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1044 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1110 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1045 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1111 } | 1046 } |
| 1112 | 1047 |
| 1113 TEST_P(GLES2DecoderGeometryInstancingTest, | 1048 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 1114 DrawElementsInstancedANGLEWithInvalidModeFails) { | 1049 DrawElementsInstancedANGLEWithInvalidModeFails) { |
| 1115 SetupIndexBuffer(); | 1050 SetupIndexBuffer(); |
| 1116 SetupVertexBuffer(); | 1051 SetupVertexBuffer(); |
| 1117 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 1052 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 1118 | 1053 |
| 1119 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) | 1054 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) |
| 1120 .Times(0); | 1055 .Times(0); |
| 1121 DrawElementsInstancedANGLE cmd; | 1056 DrawElementsInstancedANGLE cmd; |
| 1122 cmd.Init(GL_QUADS, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 1057 cmd.Init(GL_QUADS, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 1123 kValidIndexRangeStart * 2, 1); | 1058 kValidIndexRangeStart * 2, 1); |
| 1124 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1059 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1125 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 1060 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 1126 cmd.Init(GL_INVALID_ENUM, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 1061 cmd.Init(GL_INVALID_ENUM, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 1127 kValidIndexRangeStart * 2, 1); | 1062 kValidIndexRangeStart * 2, 1); |
| 1128 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1063 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1129 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 1064 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 1130 } | 1065 } |
| 1131 | 1066 |
| 1132 // Per-instance data is twice as large, but number of instances is half | 1067 // Per-instance data is twice as large, but number of instances is half |
| 1133 TEST_P(GLES2DecoderGeometryInstancingTest, | 1068 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 1134 DrawElementsInstancedANGLELargeInstanceSucceeds) { | 1069 DrawElementsInstancedANGLELargeInstanceSucceeds) { |
| 1135 SetupTexture(); | 1070 SetupTexture(); |
| 1136 SetupIndexBuffer(); | 1071 SetupIndexBuffer(); |
| 1137 SetupVertexBuffer(); | 1072 SetupVertexBuffer(); |
| 1138 SetupExpectationsForApplyingDefaultDirtyState(); | 1073 SetupExpectationsForApplyingDefaultDirtyState(); |
| 1139 //Add offset so we're sure we're accessing data near the end of the buffer. | 1074 //Add offset so we're sure we're accessing data near the end of the buffer. |
| 1140 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, | 1075 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, |
| 1141 (kNumVertices - kMaxValidIndex - 1) * 2 * | 1076 (kNumVertices - kMaxValidIndex - 1) * 2 * |
| 1142 sizeof(GLfloat)); | 1077 sizeof(GLfloat)); |
| 1143 | 1078 |
| 1144 DoEnableVertexAttribArray(0); | 1079 DoEnableVertexAttribArray(0); |
| 1145 DoVertexAttribPointer(0, 4, GL_FLOAT, 0, 0); | 1080 DoVertexAttribPointer(0, 4, GL_FLOAT, 0, 0); |
| 1146 DoVertexAttribDivisorANGLE(0, 1); | 1081 DoVertexAttribDivisorANGLE(0, 1); |
| 1147 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE( | 1082 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE( |
| 1148 GL_TRIANGLES, | 1083 GL_TRIANGLES, |
| 1149 kValidIndexRangeCount, | 1084 kValidIndexRangeCount, |
| 1150 GL_UNSIGNED_SHORT, | 1085 GL_UNSIGNED_SHORT, |
| 1151 BufferOffset(kValidIndexRangeStart * 2), | 1086 BufferOffset(kValidIndexRangeStart * 2), |
| 1152 kNumVertices / 2)) | 1087 kNumVertices / 2)) |
| 1153 .Times(1) | 1088 .Times(1) |
| 1154 .RetiresOnSaturation(); | 1089 .RetiresOnSaturation(); |
| 1155 DrawElementsInstancedANGLE cmd; | 1090 DrawElementsInstancedANGLE cmd; |
| 1156 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 1091 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 1157 kValidIndexRangeStart * 2, kNumVertices / 2); | 1092 kValidIndexRangeStart * 2, kNumVertices / 2); |
| 1158 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1093 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1159 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1094 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1160 } | 1095 } |
| 1161 | 1096 |
| 1162 // Per-instance data is twice as large, but divisor is twice | 1097 // Per-instance data is twice as large, but divisor is twice |
| 1163 TEST_P(GLES2DecoderGeometryInstancingTest, | 1098 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 1164 DrawElementsInstancedANGLELargeDivisorSucceeds) { | 1099 DrawElementsInstancedANGLELargeDivisorSucceeds) { |
| 1165 SetupTexture(); | 1100 SetupTexture(); |
| 1166 SetupIndexBuffer(); | 1101 SetupIndexBuffer(); |
| 1167 SetupVertexBuffer(); | 1102 SetupVertexBuffer(); |
| 1168 SetupExpectationsForApplyingDefaultDirtyState(); | 1103 SetupExpectationsForApplyingDefaultDirtyState(); |
| 1169 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 1104 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 1170 | 1105 |
| 1171 DoEnableVertexAttribArray(0); | 1106 DoEnableVertexAttribArray(0); |
| 1172 DoVertexAttribPointer(0, 4, GL_FLOAT, 0, 0); | 1107 DoVertexAttribPointer(0, 4, GL_FLOAT, 0, 0); |
| 1173 DoVertexAttribDivisorANGLE(0, 2); | 1108 DoVertexAttribDivisorANGLE(0, 2); |
| 1174 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE( | 1109 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE( |
| 1175 GL_TRIANGLES, | 1110 GL_TRIANGLES, |
| 1176 kValidIndexRangeCount, | 1111 kValidIndexRangeCount, |
| 1177 GL_UNSIGNED_SHORT, | 1112 GL_UNSIGNED_SHORT, |
| 1178 BufferOffset(kValidIndexRangeStart * 2), | 1113 BufferOffset(kValidIndexRangeStart * 2), |
| 1179 kNumVertices)) | 1114 kNumVertices)) |
| 1180 .Times(1) | 1115 .Times(1) |
| 1181 .RetiresOnSaturation(); | 1116 .RetiresOnSaturation(); |
| 1182 DrawElementsInstancedANGLE cmd; | 1117 DrawElementsInstancedANGLE cmd; |
| 1183 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 1118 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 1184 kValidIndexRangeStart * 2, kNumVertices); | 1119 kValidIndexRangeStart * 2, kNumVertices); |
| 1185 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1120 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1186 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1121 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1187 } | 1122 } |
| 1188 | 1123 |
| 1189 TEST_P(GLES2DecoderGeometryInstancingTest, | 1124 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 1190 DrawElementsInstancedANGLELargeFails) { | 1125 DrawElementsInstancedANGLELargeFails) { |
| 1191 SetupTexture(); | 1126 SetupTexture(); |
| 1192 SetupIndexBuffer(); | 1127 SetupIndexBuffer(); |
| 1193 SetupVertexBuffer(); | 1128 SetupVertexBuffer(); |
| 1194 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 1129 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 1195 | 1130 |
| 1196 DoEnableVertexAttribArray(0); | 1131 DoEnableVertexAttribArray(0); |
| 1197 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); | 1132 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); |
| 1198 DoVertexAttribDivisorANGLE(0, 1); | 1133 DoVertexAttribDivisorANGLE(0, 1); |
| 1199 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) | 1134 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) |
| 1200 .Times(0) | 1135 .Times(0) |
| 1201 .RetiresOnSaturation(); | 1136 .RetiresOnSaturation(); |
| 1202 DrawElementsInstancedANGLE cmd; | 1137 DrawElementsInstancedANGLE cmd; |
| 1203 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 1138 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 1204 kValidIndexRangeStart * 2, kNumVertices + 1); | 1139 kValidIndexRangeStart * 2, kNumVertices + 1); |
| 1205 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1140 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1206 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1141 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1207 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1142 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1208 | 1143 |
| 1209 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) | 1144 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) |
| 1210 .Times(0) | 1145 .Times(0) |
| 1211 .RetiresOnSaturation(); | 1146 .RetiresOnSaturation(); |
| 1212 cmd.Init(GL_TRIANGLES, kInvalidIndexRangeCount, GL_UNSIGNED_SHORT, | 1147 cmd.Init(GL_TRIANGLES, kInvalidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 1213 kInvalidIndexRangeStart * 2, kNumVertices); | 1148 kInvalidIndexRangeStart * 2, kNumVertices); |
| 1214 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1149 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1215 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1150 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1216 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1151 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1217 } | 1152 } |
| 1218 | 1153 |
| 1219 TEST_P(GLES2DecoderGeometryInstancingTest, | 1154 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 1220 DrawElementsInstancedANGLEInvalidPrimcountFails) { | 1155 DrawElementsInstancedANGLEInvalidPrimcountFails) { |
| 1221 SetupTexture(); | 1156 SetupTexture(); |
| 1222 SetupIndexBuffer(); | 1157 SetupIndexBuffer(); |
| 1223 SetupVertexBuffer(); | 1158 SetupVertexBuffer(); |
| 1224 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 1159 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 1225 | 1160 |
| 1226 DoEnableVertexAttribArray(0); | 1161 DoEnableVertexAttribArray(0); |
| 1227 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); | 1162 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); |
| 1228 DoVertexAttribDivisorANGLE(0, 1); | 1163 DoVertexAttribDivisorANGLE(0, 1); |
| 1229 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) | 1164 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) |
| 1230 .Times(0) | 1165 .Times(0) |
| 1231 .RetiresOnSaturation(); | 1166 .RetiresOnSaturation(); |
| 1232 DrawElementsInstancedANGLE cmd; | 1167 DrawElementsInstancedANGLE cmd; |
| 1233 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 1168 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 1234 kValidIndexRangeStart * 2, -1); | 1169 kValidIndexRangeStart * 2, -1); |
| 1235 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1170 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1236 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1171 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1237 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1172 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1238 } | 1173 } |
| 1239 | 1174 |
| 1240 // Per-index data is twice as large, but values of indices are smaller | 1175 // Per-index data is twice as large, but values of indices are smaller |
| 1241 TEST_P(GLES2DecoderGeometryInstancingTest, | 1176 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 1242 DrawElementsInstancedANGLELargeIndexSucceeds) { | 1177 DrawElementsInstancedANGLELargeIndexSucceeds) { |
| 1243 SetupTexture(); | 1178 SetupTexture(); |
| 1244 SetupIndexBuffer(); | 1179 SetupIndexBuffer(); |
| 1245 SetupVertexBuffer(); | 1180 SetupVertexBuffer(); |
| 1246 SetupExpectationsForApplyingDefaultDirtyState(); | 1181 SetupExpectationsForApplyingDefaultDirtyState(); |
| 1247 DoVertexAttribPointer(1, 4, GL_FLOAT, 0, 0); | 1182 DoVertexAttribPointer(1, 4, GL_FLOAT, 0, 0); |
| 1248 | 1183 |
| 1249 DoEnableVertexAttribArray(0); | 1184 DoEnableVertexAttribArray(0); |
| 1250 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); | 1185 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); |
| 1251 DoVertexAttribDivisorANGLE(0, 1); | 1186 DoVertexAttribDivisorANGLE(0, 1); |
| 1252 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE( | 1187 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE( |
| 1253 GL_TRIANGLES, | 1188 GL_TRIANGLES, |
| 1254 kValidIndexRangeCount, | 1189 kValidIndexRangeCount, |
| 1255 GL_UNSIGNED_SHORT, | 1190 GL_UNSIGNED_SHORT, |
| 1256 BufferOffset(kValidIndexRangeStart * 2), | 1191 BufferOffset(kValidIndexRangeStart * 2), |
| 1257 kNumVertices)) | 1192 kNumVertices)) |
| 1258 .Times(1) | 1193 .Times(1) |
| 1259 .RetiresOnSaturation(); | 1194 .RetiresOnSaturation(); |
| 1260 DrawElementsInstancedANGLE cmd; | 1195 DrawElementsInstancedANGLE cmd; |
| 1261 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 1196 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 1262 kValidIndexRangeStart * 2, kNumVertices); | 1197 kValidIndexRangeStart * 2, kNumVertices); |
| 1263 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1198 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1264 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1199 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1265 } | 1200 } |
| 1266 | 1201 |
| 1267 TEST_P(GLES2DecoderGeometryInstancingTest, | 1202 TEST_F(GLES2DecoderGeometryInstancingTest, |
| 1268 DrawElementsInstancedANGLENoDivisor0Fails) { | 1203 DrawElementsInstancedANGLENoDivisor0Fails) { |
| 1269 SetupTexture(); | 1204 SetupTexture(); |
| 1270 SetupIndexBuffer(); | 1205 SetupIndexBuffer(); |
| 1271 SetupVertexBuffer(); | 1206 SetupVertexBuffer(); |
| 1272 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 1207 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 1273 | 1208 |
| 1274 DoEnableVertexAttribArray(0); | 1209 DoEnableVertexAttribArray(0); |
| 1275 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); | 1210 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); |
| 1276 DoVertexAttribDivisorANGLE(0, 1); | 1211 DoVertexAttribDivisorANGLE(0, 1); |
| 1277 DoVertexAttribDivisorANGLE(1, 1); | 1212 DoVertexAttribDivisorANGLE(1, 1); |
| 1278 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) | 1213 EXPECT_CALL(*gl_, DrawElementsInstancedANGLE(_, _, _, _, _)) |
| 1279 .Times(0) | 1214 .Times(0) |
| 1280 .RetiresOnSaturation(); | 1215 .RetiresOnSaturation(); |
| 1281 DrawElementsInstancedANGLE cmd; | 1216 DrawElementsInstancedANGLE cmd; |
| 1282 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 1217 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 1283 kValidIndexRangeStart * 2, kNumVertices); | 1218 kValidIndexRangeStart * 2, kNumVertices); |
| 1284 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1219 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1285 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1220 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1286 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1221 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1287 } | 1222 } |
| 1288 | 1223 |
| 1289 TEST_P(GLES2DecoderWithShaderTest, GetVertexAttribPointervSucceeds) { | 1224 TEST_F(GLES2DecoderWithShaderTest, GetVertexAttribPointervSucceeds) { |
| 1290 const float dummy = 0; | 1225 const float dummy = 0; |
| 1291 const GLuint kOffsetToTestFor = sizeof(dummy) * 4; | 1226 const GLuint kOffsetToTestFor = sizeof(dummy) * 4; |
| 1292 const GLuint kIndexToTest = 1; | 1227 const GLuint kIndexToTest = 1; |
| 1293 GetVertexAttribPointerv::Result* result = | 1228 GetVertexAttribPointerv::Result* result = |
| 1294 static_cast<GetVertexAttribPointerv::Result*>(shared_memory_address_); | 1229 static_cast<GetVertexAttribPointerv::Result*>(shared_memory_address_); |
| 1295 result->size = 0; | 1230 result->size = 0; |
| 1296 const GLuint* result_value = result->GetData(); | 1231 const GLuint* result_value = result->GetData(); |
| 1297 // Test that initial value is 0. | 1232 // Test that initial value is 0. |
| 1298 GetVertexAttribPointerv cmd; | 1233 GetVertexAttribPointerv cmd; |
| 1299 cmd.Init(kIndexToTest, GL_VERTEX_ATTRIB_ARRAY_POINTER, | 1234 cmd.Init(kIndexToTest, GL_VERTEX_ATTRIB_ARRAY_POINTER, |
| 1300 shared_memory_id_, shared_memory_offset_); | 1235 shared_memory_id_, shared_memory_offset_); |
| 1301 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1236 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1302 EXPECT_EQ(sizeof(*result_value), result->size); | 1237 EXPECT_EQ(sizeof(*result_value), result->size); |
| 1303 EXPECT_EQ(0u, *result_value); | 1238 EXPECT_EQ(0u, *result_value); |
| 1304 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1239 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1305 | 1240 |
| 1306 // Set the value and see that we get it. | 1241 // Set the value and see that we get it. |
| 1307 SetupVertexBuffer(); | 1242 SetupVertexBuffer(); |
| 1308 DoVertexAttribPointer(kIndexToTest, 2, GL_FLOAT, 0, kOffsetToTestFor); | 1243 DoVertexAttribPointer(kIndexToTest, 2, GL_FLOAT, 0, kOffsetToTestFor); |
| 1309 result->size = 0; | 1244 result->size = 0; |
| 1310 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1245 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1311 EXPECT_EQ(sizeof(*result_value), result->size); | 1246 EXPECT_EQ(sizeof(*result_value), result->size); |
| 1312 EXPECT_EQ(kOffsetToTestFor, *result_value); | 1247 EXPECT_EQ(kOffsetToTestFor, *result_value); |
| 1313 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1248 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1314 } | 1249 } |
| 1315 | 1250 |
| 1316 TEST_P(GLES2DecoderWithShaderTest, GetVertexAttribPointervBadArgsFails) { | 1251 TEST_F(GLES2DecoderWithShaderTest, GetVertexAttribPointervBadArgsFails) { |
| 1317 const GLuint kIndexToTest = 1; | 1252 const GLuint kIndexToTest = 1; |
| 1318 GetVertexAttribPointerv::Result* result = | 1253 GetVertexAttribPointerv::Result* result = |
| 1319 static_cast<GetVertexAttribPointerv::Result*>(shared_memory_address_); | 1254 static_cast<GetVertexAttribPointerv::Result*>(shared_memory_address_); |
| 1320 result->size = 0; | 1255 result->size = 0; |
| 1321 const GLuint* result_value = result->GetData(); | 1256 const GLuint* result_value = result->GetData(); |
| 1322 // Test pname invalid fails. | 1257 // Test pname invalid fails. |
| 1323 GetVertexAttribPointerv cmd; | 1258 GetVertexAttribPointerv cmd; |
| 1324 cmd.Init(kIndexToTest, GL_VERTEX_ATTRIB_ARRAY_POINTER + 1, | 1259 cmd.Init(kIndexToTest, GL_VERTEX_ATTRIB_ARRAY_POINTER + 1, |
| 1325 shared_memory_id_, shared_memory_offset_); | 1260 shared_memory_id_, shared_memory_offset_); |
| 1326 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1261 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1341 cmd.Init(kIndexToTest, GL_VERTEX_ATTRIB_ARRAY_POINTER, | 1276 cmd.Init(kIndexToTest, GL_VERTEX_ATTRIB_ARRAY_POINTER, |
| 1342 kInvalidSharedMemoryId, shared_memory_offset_); | 1277 kInvalidSharedMemoryId, shared_memory_offset_); |
| 1343 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1278 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1344 | 1279 |
| 1345 // Test memory offset bad fails. | 1280 // Test memory offset bad fails. |
| 1346 cmd.Init(kIndexToTest, GL_VERTEX_ATTRIB_ARRAY_POINTER, | 1281 cmd.Init(kIndexToTest, GL_VERTEX_ATTRIB_ARRAY_POINTER, |
| 1347 shared_memory_id_, kInvalidSharedMemoryOffset); | 1282 shared_memory_id_, kInvalidSharedMemoryOffset); |
| 1348 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1283 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1349 } | 1284 } |
| 1350 | 1285 |
| 1351 TEST_P(GLES2DecoderWithShaderTest, GetUniformivSucceeds) { | 1286 TEST_F(GLES2DecoderWithShaderTest, GetUniformivSucceeds) { |
| 1352 GetUniformiv::Result* result = | 1287 GetUniformiv::Result* result = |
| 1353 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 1288 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
| 1354 result->size = 0; | 1289 result->size = 0; |
| 1355 GetUniformiv cmd; | 1290 GetUniformiv cmd; |
| 1356 cmd.Init(client_program_id_, | 1291 cmd.Init(client_program_id_, |
| 1357 kUniform2FakeLocation, | 1292 kUniform2FakeLocation, |
| 1358 kSharedMemoryId, kSharedMemoryOffset); | 1293 kSharedMemoryId, kSharedMemoryOffset); |
| 1359 EXPECT_CALL(*gl_, GetUniformiv(kServiceProgramId, kUniform2RealLocation, _)) | 1294 EXPECT_CALL(*gl_, GetUniformiv(kServiceProgramId, kUniform2RealLocation, _)) |
| 1360 .Times(1); | 1295 .Times(1); |
| 1361 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1296 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1362 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 1297 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
| 1363 result->size); | 1298 result->size); |
| 1364 } | 1299 } |
| 1365 | 1300 |
| 1366 TEST_P(GLES2DecoderWithShaderTest, GetUniformivArrayElementSucceeds) { | 1301 TEST_F(GLES2DecoderWithShaderTest, GetUniformivArrayElementSucceeds) { |
| 1367 GetUniformiv::Result* result = | 1302 GetUniformiv::Result* result = |
| 1368 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 1303 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
| 1369 result->size = 0; | 1304 result->size = 0; |
| 1370 GetUniformiv cmd; | 1305 GetUniformiv cmd; |
| 1371 cmd.Init(client_program_id_, | 1306 cmd.Init(client_program_id_, |
| 1372 kUniform2ElementFakeLocation, | 1307 kUniform2ElementFakeLocation, |
| 1373 kSharedMemoryId, kSharedMemoryOffset); | 1308 kSharedMemoryId, kSharedMemoryOffset); |
| 1374 EXPECT_CALL(*gl_, | 1309 EXPECT_CALL(*gl_, |
| 1375 GetUniformiv(kServiceProgramId, kUniform2ElementRealLocation, _)) | 1310 GetUniformiv(kServiceProgramId, kUniform2ElementRealLocation, _)) |
| 1376 .Times(1); | 1311 .Times(1); |
| 1377 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1312 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1378 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 1313 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
| 1379 result->size); | 1314 result->size); |
| 1380 } | 1315 } |
| 1381 | 1316 |
| 1382 TEST_P(GLES2DecoderWithShaderTest, GetUniformivBadProgramFails) { | 1317 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadProgramFails) { |
| 1383 GetUniformiv::Result* result = | 1318 GetUniformiv::Result* result = |
| 1384 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 1319 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
| 1385 result->size = 0; | 1320 result->size = 0; |
| 1386 GetUniformiv cmd; | 1321 GetUniformiv cmd; |
| 1387 // non-existant program | 1322 // non-existant program |
| 1388 cmd.Init(kInvalidClientId, | 1323 cmd.Init(kInvalidClientId, |
| 1389 kUniform2FakeLocation, | 1324 kUniform2FakeLocation, |
| 1390 kSharedMemoryId, kSharedMemoryOffset); | 1325 kSharedMemoryId, kSharedMemoryOffset); |
| 1391 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) | 1326 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) |
| 1392 .Times(0); | 1327 .Times(0); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1414 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1349 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1415 result->size = kInitialResult; | 1350 result->size = kInitialResult; |
| 1416 cmd.Init(kNewClientId, | 1351 cmd.Init(kNewClientId, |
| 1417 kUniform2FakeLocation, | 1352 kUniform2FakeLocation, |
| 1418 kSharedMemoryId, kSharedMemoryOffset); | 1353 kSharedMemoryId, kSharedMemoryOffset); |
| 1419 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1354 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1420 EXPECT_EQ(0U, result->size); | 1355 EXPECT_EQ(0U, result->size); |
| 1421 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1356 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1422 } | 1357 } |
| 1423 | 1358 |
| 1424 TEST_P(GLES2DecoderWithShaderTest, GetUniformivBadLocationFails) { | 1359 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadLocationFails) { |
| 1425 GetUniformiv::Result* result = | 1360 GetUniformiv::Result* result = |
| 1426 static_cast<GetUniformiv::Result*>(shared_memory_address_); | 1361 static_cast<GetUniformiv::Result*>(shared_memory_address_); |
| 1427 result->size = 0; | 1362 result->size = 0; |
| 1428 GetUniformiv cmd; | 1363 GetUniformiv cmd; |
| 1429 // invalid location | 1364 // invalid location |
| 1430 cmd.Init(client_program_id_, kInvalidUniformLocation, | 1365 cmd.Init(client_program_id_, kInvalidUniformLocation, |
| 1431 kSharedMemoryId, kSharedMemoryOffset); | 1366 kSharedMemoryId, kSharedMemoryOffset); |
| 1432 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) | 1367 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) |
| 1433 .Times(0); | 1368 .Times(0); |
| 1434 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1369 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1435 EXPECT_EQ(0U, result->size); | 1370 EXPECT_EQ(0U, result->size); |
| 1436 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1371 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1437 } | 1372 } |
| 1438 | 1373 |
| 1439 TEST_P(GLES2DecoderWithShaderTest, GetUniformivBadSharedMemoryFails) { | 1374 TEST_F(GLES2DecoderWithShaderTest, GetUniformivBadSharedMemoryFails) { |
| 1440 GetUniformiv cmd; | 1375 GetUniformiv cmd; |
| 1441 cmd.Init(client_program_id_, | 1376 cmd.Init(client_program_id_, |
| 1442 kUniform2FakeLocation, | 1377 kUniform2FakeLocation, |
| 1443 kInvalidSharedMemoryId, kSharedMemoryOffset); | 1378 kInvalidSharedMemoryId, kSharedMemoryOffset); |
| 1444 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) | 1379 EXPECT_CALL(*gl_, GetUniformiv(_, _, _)) |
| 1445 .Times(0); | 1380 .Times(0); |
| 1446 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1381 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1447 cmd.Init(client_program_id_, kUniform2FakeLocation, | 1382 cmd.Init(client_program_id_, kUniform2FakeLocation, |
| 1448 kSharedMemoryId, kInvalidSharedMemoryOffset); | 1383 kSharedMemoryId, kInvalidSharedMemoryOffset); |
| 1449 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1384 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1450 }; | 1385 }; |
| 1451 | 1386 |
| 1452 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) { | 1387 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvSucceeds) { |
| 1453 GetUniformfv::Result* result = | 1388 GetUniformfv::Result* result = |
| 1454 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 1389 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
| 1455 result->size = 0; | 1390 result->size = 0; |
| 1456 GetUniformfv cmd; | 1391 GetUniformfv cmd; |
| 1457 cmd.Init(client_program_id_, | 1392 cmd.Init(client_program_id_, |
| 1458 kUniform2FakeLocation, | 1393 kUniform2FakeLocation, |
| 1459 kSharedMemoryId, kSharedMemoryOffset); | 1394 kSharedMemoryId, kSharedMemoryOffset); |
| 1460 EXPECT_CALL(*gl_, GetUniformfv(kServiceProgramId, kUniform2RealLocation, _)) | 1395 EXPECT_CALL(*gl_, GetUniformfv(kServiceProgramId, kUniform2RealLocation, _)) |
| 1461 .Times(1); | 1396 .Times(1); |
| 1462 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1397 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1463 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 1398 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
| 1464 result->size); | 1399 result->size); |
| 1465 } | 1400 } |
| 1466 | 1401 |
| 1467 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvArrayElementSucceeds) { | 1402 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvArrayElementSucceeds) { |
| 1468 GetUniformfv::Result* result = | 1403 GetUniformfv::Result* result = |
| 1469 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 1404 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
| 1470 result->size = 0; | 1405 result->size = 0; |
| 1471 GetUniformfv cmd; | 1406 GetUniformfv cmd; |
| 1472 cmd.Init(client_program_id_, | 1407 cmd.Init(client_program_id_, |
| 1473 kUniform2ElementFakeLocation, | 1408 kUniform2ElementFakeLocation, |
| 1474 kSharedMemoryId, kSharedMemoryOffset); | 1409 kSharedMemoryId, kSharedMemoryOffset); |
| 1475 EXPECT_CALL(*gl_, | 1410 EXPECT_CALL(*gl_, |
| 1476 GetUniformfv(kServiceProgramId, kUniform2ElementRealLocation, _)) | 1411 GetUniformfv(kServiceProgramId, kUniform2ElementRealLocation, _)) |
| 1477 .Times(1); | 1412 .Times(1); |
| 1478 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1413 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1479 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), | 1414 EXPECT_EQ(GLES2Util::GetGLDataTypeSizeForUniforms(kUniform2Type), |
| 1480 result->size); | 1415 result->size); |
| 1481 } | 1416 } |
| 1482 | 1417 |
| 1483 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvBadProgramFails) { | 1418 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadProgramFails) { |
| 1484 GetUniformfv::Result* result = | 1419 GetUniformfv::Result* result = |
| 1485 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 1420 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
| 1486 result->size = 0; | 1421 result->size = 0; |
| 1487 GetUniformfv cmd; | 1422 GetUniformfv cmd; |
| 1488 // non-existant program | 1423 // non-existant program |
| 1489 cmd.Init(kInvalidClientId, | 1424 cmd.Init(kInvalidClientId, |
| 1490 kUniform2FakeLocation, | 1425 kUniform2FakeLocation, |
| 1491 kSharedMemoryId, kSharedMemoryOffset); | 1426 kSharedMemoryId, kSharedMemoryOffset); |
| 1492 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) | 1427 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) |
| 1493 .Times(0); | 1428 .Times(0); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1515 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1450 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1516 result->size = kInitialResult; | 1451 result->size = kInitialResult; |
| 1517 cmd.Init(kNewClientId, | 1452 cmd.Init(kNewClientId, |
| 1518 kUniform2FakeLocation, | 1453 kUniform2FakeLocation, |
| 1519 kSharedMemoryId, kSharedMemoryOffset); | 1454 kSharedMemoryId, kSharedMemoryOffset); |
| 1520 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1455 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1521 EXPECT_EQ(0U, result->size); | 1456 EXPECT_EQ(0U, result->size); |
| 1522 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1457 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1523 } | 1458 } |
| 1524 | 1459 |
| 1525 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvBadLocationFails) { | 1460 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadLocationFails) { |
| 1526 GetUniformfv::Result* result = | 1461 GetUniformfv::Result* result = |
| 1527 static_cast<GetUniformfv::Result*>(shared_memory_address_); | 1462 static_cast<GetUniformfv::Result*>(shared_memory_address_); |
| 1528 result->size = 0; | 1463 result->size = 0; |
| 1529 GetUniformfv cmd; | 1464 GetUniformfv cmd; |
| 1530 // invalid location | 1465 // invalid location |
| 1531 cmd.Init(client_program_id_, kInvalidUniformLocation, | 1466 cmd.Init(client_program_id_, kInvalidUniformLocation, |
| 1532 kSharedMemoryId, kSharedMemoryOffset); | 1467 kSharedMemoryId, kSharedMemoryOffset); |
| 1533 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) | 1468 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) |
| 1534 .Times(0); | 1469 .Times(0); |
| 1535 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1470 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1536 EXPECT_EQ(0U, result->size); | 1471 EXPECT_EQ(0U, result->size); |
| 1537 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1472 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1538 } | 1473 } |
| 1539 | 1474 |
| 1540 TEST_P(GLES2DecoderWithShaderTest, GetUniformfvBadSharedMemoryFails) { | 1475 TEST_F(GLES2DecoderWithShaderTest, GetUniformfvBadSharedMemoryFails) { |
| 1541 GetUniformfv cmd; | 1476 GetUniformfv cmd; |
| 1542 cmd.Init(client_program_id_, | 1477 cmd.Init(client_program_id_, |
| 1543 kUniform2FakeLocation, | 1478 kUniform2FakeLocation, |
| 1544 kInvalidSharedMemoryId, kSharedMemoryOffset); | 1479 kInvalidSharedMemoryId, kSharedMemoryOffset); |
| 1545 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) | 1480 EXPECT_CALL(*gl_, GetUniformfv(_, _, _)) |
| 1546 .Times(0); | 1481 .Times(0); |
| 1547 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1482 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1548 cmd.Init(client_program_id_, kUniform2FakeLocation, | 1483 cmd.Init(client_program_id_, kUniform2FakeLocation, |
| 1549 kSharedMemoryId, kInvalidSharedMemoryOffset); | 1484 kSharedMemoryId, kInvalidSharedMemoryOffset); |
| 1550 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1485 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1551 }; | 1486 }; |
| 1552 | 1487 |
| 1553 TEST_P(GLES2DecoderWithShaderTest, GetAttachedShadersSucceeds) { | 1488 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersSucceeds) { |
| 1554 GetAttachedShaders cmd; | 1489 GetAttachedShaders cmd; |
| 1555 typedef GetAttachedShaders::Result Result; | 1490 typedef GetAttachedShaders::Result Result; |
| 1556 Result* result = static_cast<Result*>(shared_memory_address_); | 1491 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1557 result->size = 0; | 1492 result->size = 0; |
| 1558 EXPECT_CALL(*gl_, GetAttachedShaders(kServiceProgramId, 1, _, _)) | 1493 EXPECT_CALL(*gl_, GetAttachedShaders(kServiceProgramId, 1, _, _)) |
| 1559 .WillOnce(DoAll(SetArgumentPointee<2>(1), | 1494 .WillOnce(DoAll(SetArgumentPointee<2>(1), |
| 1560 SetArgumentPointee<3>(kServiceShaderId))); | 1495 SetArgumentPointee<3>(kServiceShaderId))); |
| 1561 cmd.Init(client_program_id_, shared_memory_id_, shared_memory_offset_, | 1496 cmd.Init(client_program_id_, shared_memory_id_, shared_memory_offset_, |
| 1562 Result::ComputeSize(1)); | 1497 Result::ComputeSize(1)); |
| 1563 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1498 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1564 EXPECT_EQ(1, result->GetNumResults()); | 1499 EXPECT_EQ(1, result->GetNumResults()); |
| 1565 EXPECT_EQ(client_shader_id_, result->GetData()[0]); | 1500 EXPECT_EQ(client_shader_id_, result->GetData()[0]); |
| 1566 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1501 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1567 } | 1502 } |
| 1568 | 1503 |
| 1569 TEST_P(GLES2DecoderWithShaderTest, GetAttachedShadersResultNotInitFail) { | 1504 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersResultNotInitFail) { |
| 1570 GetAttachedShaders cmd; | 1505 GetAttachedShaders cmd; |
| 1571 typedef GetAttachedShaders::Result Result; | 1506 typedef GetAttachedShaders::Result Result; |
| 1572 Result* result = static_cast<Result*>(shared_memory_address_); | 1507 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1573 result->size = 1; | 1508 result->size = 1; |
| 1574 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)) | 1509 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)) |
| 1575 .Times(0); | 1510 .Times(0); |
| 1576 cmd.Init(client_program_id_, shared_memory_id_, shared_memory_offset_, | 1511 cmd.Init(client_program_id_, shared_memory_id_, shared_memory_offset_, |
| 1577 Result::ComputeSize(1)); | 1512 Result::ComputeSize(1)); |
| 1578 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1513 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1579 } | 1514 } |
| 1580 | 1515 |
| 1581 TEST_P(GLES2DecoderWithShaderTest, GetAttachedShadersBadProgramFails) { | 1516 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersBadProgramFails) { |
| 1582 GetAttachedShaders cmd; | 1517 GetAttachedShaders cmd; |
| 1583 typedef GetAttachedShaders::Result Result; | 1518 typedef GetAttachedShaders::Result Result; |
| 1584 Result* result = static_cast<Result*>(shared_memory_address_); | 1519 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1585 result->size = 0; | 1520 result->size = 0; |
| 1586 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)) | 1521 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)) |
| 1587 .Times(0); | 1522 .Times(0); |
| 1588 cmd.Init(kInvalidClientId, shared_memory_id_, shared_memory_offset_, | 1523 cmd.Init(kInvalidClientId, shared_memory_id_, shared_memory_offset_, |
| 1589 Result::ComputeSize(1)); | 1524 Result::ComputeSize(1)); |
| 1590 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1525 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1591 EXPECT_EQ(0U, result->size); | 1526 EXPECT_EQ(0U, result->size); |
| 1592 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1527 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1593 } | 1528 } |
| 1594 | 1529 |
| 1595 TEST_P(GLES2DecoderWithShaderTest, GetAttachedShadersBadSharedMemoryFails) { | 1530 TEST_F(GLES2DecoderWithShaderTest, GetAttachedShadersBadSharedMemoryFails) { |
| 1596 GetAttachedShaders cmd; | 1531 GetAttachedShaders cmd; |
| 1597 typedef GetAttachedShaders::Result Result; | 1532 typedef GetAttachedShaders::Result Result; |
| 1598 cmd.Init(client_program_id_, kInvalidSharedMemoryId, shared_memory_offset_, | 1533 cmd.Init(client_program_id_, kInvalidSharedMemoryId, shared_memory_offset_, |
| 1599 Result::ComputeSize(1)); | 1534 Result::ComputeSize(1)); |
| 1600 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)) | 1535 EXPECT_CALL(*gl_, GetAttachedShaders(_, _, _, _)) |
| 1601 .Times(0); | 1536 .Times(0); |
| 1602 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1537 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1603 cmd.Init(client_program_id_, shared_memory_id_, kInvalidSharedMemoryOffset, | 1538 cmd.Init(client_program_id_, shared_memory_id_, kInvalidSharedMemoryOffset, |
| 1604 Result::ComputeSize(1)); | 1539 Result::ComputeSize(1)); |
| 1605 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1540 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1606 } | 1541 } |
| 1607 | 1542 |
| 1608 TEST_P(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatSucceeds) { | 1543 TEST_F(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatSucceeds) { |
| 1609 ScopedGLImplementationSetter gl_impl(::gfx::kGLImplementationEGLGLES2); | 1544 ScopedGLImplementationSetter gl_impl(::gfx::kGLImplementationEGLGLES2); |
| 1610 GetShaderPrecisionFormat cmd; | 1545 GetShaderPrecisionFormat cmd; |
| 1611 typedef GetShaderPrecisionFormat::Result Result; | 1546 typedef GetShaderPrecisionFormat::Result Result; |
| 1612 Result* result = static_cast<Result*>(shared_memory_address_); | 1547 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1613 result->success = 0; | 1548 result->success = 0; |
| 1614 const GLint range[2] = { 62, 62 }; | 1549 const GLint range[2] = { 62, 62 }; |
| 1615 const GLint precision = 16; | 1550 const GLint precision = 16; |
| 1616 EXPECT_CALL(*gl_,GetShaderPrecisionFormat(_, _, _, _)) | 1551 EXPECT_CALL(*gl_,GetShaderPrecisionFormat(_, _, _, _)) |
| 1617 .WillOnce(DoAll(SetArrayArgument<2>(range,range+2), | 1552 .WillOnce(DoAll(SetArrayArgument<2>(range,range+2), |
| 1618 SetArgumentPointee<3>(precision))) | 1553 SetArgumentPointee<3>(precision))) |
| 1619 .RetiresOnSaturation(); | 1554 .RetiresOnSaturation(); |
| 1620 cmd.Init(GL_VERTEX_SHADER, GL_HIGH_FLOAT, | 1555 cmd.Init(GL_VERTEX_SHADER, GL_HIGH_FLOAT, |
| 1621 shared_memory_id_, shared_memory_offset_); | 1556 shared_memory_id_, shared_memory_offset_); |
| 1622 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1557 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1623 EXPECT_NE(0, result->success); | 1558 EXPECT_NE(0, result->success); |
| 1624 EXPECT_EQ(range[0], result->min_range); | 1559 EXPECT_EQ(range[0], result->min_range); |
| 1625 EXPECT_EQ(range[1], result->max_range); | 1560 EXPECT_EQ(range[1], result->max_range); |
| 1626 EXPECT_EQ(precision, result->precision); | 1561 EXPECT_EQ(precision, result->precision); |
| 1627 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1562 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1628 } | 1563 } |
| 1629 | 1564 |
| 1630 TEST_P(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatResultNotInitFails) { | 1565 TEST_F(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatResultNotInitFails) { |
| 1631 GetShaderPrecisionFormat cmd; | 1566 GetShaderPrecisionFormat cmd; |
| 1632 typedef GetShaderPrecisionFormat::Result Result; | 1567 typedef GetShaderPrecisionFormat::Result Result; |
| 1633 Result* result = static_cast<Result*>(shared_memory_address_); | 1568 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1634 result->success = 1; | 1569 result->success = 1; |
| 1635 // NOTE: GL might not be called. There is no Desktop OpenGL equivalent | 1570 // NOTE: GL might not be called. There is no Desktop OpenGL equivalent |
| 1636 cmd.Init(GL_VERTEX_SHADER, GL_HIGH_FLOAT, | 1571 cmd.Init(GL_VERTEX_SHADER, GL_HIGH_FLOAT, |
| 1637 shared_memory_id_, shared_memory_offset_); | 1572 shared_memory_id_, shared_memory_offset_); |
| 1638 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1573 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1639 } | 1574 } |
| 1640 | 1575 |
| 1641 TEST_P(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatBadArgsFails) { | 1576 TEST_F(GLES2DecoderWithShaderTest, GetShaderPrecisionFormatBadArgsFails) { |
| 1642 typedef GetShaderPrecisionFormat::Result Result; | 1577 typedef GetShaderPrecisionFormat::Result Result; |
| 1643 Result* result = static_cast<Result*>(shared_memory_address_); | 1578 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1644 result->success = 0; | 1579 result->success = 0; |
| 1645 GetShaderPrecisionFormat cmd; | 1580 GetShaderPrecisionFormat cmd; |
| 1646 cmd.Init(GL_TEXTURE_2D, GL_HIGH_FLOAT, | 1581 cmd.Init(GL_TEXTURE_2D, GL_HIGH_FLOAT, |
| 1647 shared_memory_id_, shared_memory_offset_); | 1582 shared_memory_id_, shared_memory_offset_); |
| 1648 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1583 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1649 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 1584 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 1650 result->success = 0; | 1585 result->success = 0; |
| 1651 cmd.Init(GL_VERTEX_SHADER, GL_TEXTURE_2D, | 1586 cmd.Init(GL_VERTEX_SHADER, GL_TEXTURE_2D, |
| 1652 shared_memory_id_, shared_memory_offset_); | 1587 shared_memory_id_, shared_memory_offset_); |
| 1653 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1588 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1654 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 1589 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 1655 } | 1590 } |
| 1656 | 1591 |
| 1657 TEST_P(GLES2DecoderWithShaderTest, | 1592 TEST_F(GLES2DecoderWithShaderTest, |
| 1658 GetShaderPrecisionFormatBadSharedMemoryFails) { | 1593 GetShaderPrecisionFormatBadSharedMemoryFails) { |
| 1659 GetShaderPrecisionFormat cmd; | 1594 GetShaderPrecisionFormat cmd; |
| 1660 cmd.Init(GL_VERTEX_SHADER, GL_HIGH_FLOAT, | 1595 cmd.Init(GL_VERTEX_SHADER, GL_HIGH_FLOAT, |
| 1661 kInvalidSharedMemoryId, shared_memory_offset_); | 1596 kInvalidSharedMemoryId, shared_memory_offset_); |
| 1662 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1597 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1663 cmd.Init(GL_VERTEX_SHADER, GL_TEXTURE_2D, | 1598 cmd.Init(GL_VERTEX_SHADER, GL_TEXTURE_2D, |
| 1664 shared_memory_id_, kInvalidSharedMemoryOffset); | 1599 shared_memory_id_, kInvalidSharedMemoryOffset); |
| 1665 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1600 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1666 } | 1601 } |
| 1667 | 1602 |
| 1668 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformSucceeds) { | 1603 TEST_F(GLES2DecoderWithShaderTest, GetActiveUniformSucceeds) { |
| 1669 const GLuint kUniformIndex = 1; | 1604 const GLuint kUniformIndex = 1; |
| 1670 const uint32 kBucketId = 123; | 1605 const uint32 kBucketId = 123; |
| 1671 GetActiveUniform cmd; | 1606 GetActiveUniform cmd; |
| 1672 typedef GetActiveUniform::Result Result; | 1607 typedef GetActiveUniform::Result Result; |
| 1673 Result* result = static_cast<Result*>(shared_memory_address_); | 1608 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1674 result->success = 0; | 1609 result->success = 0; |
| 1675 cmd.Init(client_program_id_, kUniformIndex, kBucketId, | 1610 cmd.Init(client_program_id_, kUniformIndex, kBucketId, |
| 1676 shared_memory_id_, shared_memory_offset_); | 1611 shared_memory_id_, shared_memory_offset_); |
| 1677 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1612 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1678 EXPECT_NE(0, result->success); | 1613 EXPECT_NE(0, result->success); |
| 1679 EXPECT_EQ(kUniform2Size, result->size); | 1614 EXPECT_EQ(kUniform2Size, result->size); |
| 1680 EXPECT_EQ(kUniform2Type, result->type); | 1615 EXPECT_EQ(kUniform2Type, result->type); |
| 1681 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1616 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1682 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 1617 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 1683 ASSERT_TRUE(bucket != NULL); | 1618 ASSERT_TRUE(bucket != NULL); |
| 1684 EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kUniform2Name, | 1619 EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kUniform2Name, |
| 1685 bucket->size())); | 1620 bucket->size())); |
| 1686 } | 1621 } |
| 1687 | 1622 |
| 1688 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformResultNotInitFails) { | 1623 TEST_F(GLES2DecoderWithShaderTest, GetActiveUniformResultNotInitFails) { |
| 1689 const GLuint kUniformIndex = 1; | 1624 const GLuint kUniformIndex = 1; |
| 1690 const uint32 kBucketId = 123; | 1625 const uint32 kBucketId = 123; |
| 1691 GetActiveUniform cmd; | 1626 GetActiveUniform cmd; |
| 1692 typedef GetActiveUniform::Result Result; | 1627 typedef GetActiveUniform::Result Result; |
| 1693 Result* result = static_cast<Result*>(shared_memory_address_); | 1628 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1694 result->success = 1; | 1629 result->success = 1; |
| 1695 cmd.Init(client_program_id_, kUniformIndex, kBucketId, | 1630 cmd.Init(client_program_id_, kUniformIndex, kBucketId, |
| 1696 shared_memory_id_, shared_memory_offset_); | 1631 shared_memory_id_, shared_memory_offset_); |
| 1697 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1632 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1698 } | 1633 } |
| 1699 | 1634 |
| 1700 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBadProgramFails) { | 1635 TEST_F(GLES2DecoderWithShaderTest, GetActiveUniformBadProgramFails) { |
| 1701 const GLuint kUniformIndex = 1; | 1636 const GLuint kUniformIndex = 1; |
| 1702 const uint32 kBucketId = 123; | 1637 const uint32 kBucketId = 123; |
| 1703 GetActiveUniform cmd; | 1638 GetActiveUniform cmd; |
| 1704 typedef GetActiveUniform::Result Result; | 1639 typedef GetActiveUniform::Result Result; |
| 1705 Result* result = static_cast<Result*>(shared_memory_address_); | 1640 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1706 result->success = 0; | 1641 result->success = 0; |
| 1707 cmd.Init(kInvalidClientId, kUniformIndex, kBucketId, | 1642 cmd.Init(kInvalidClientId, kUniformIndex, kBucketId, |
| 1708 shared_memory_id_, shared_memory_offset_); | 1643 shared_memory_id_, shared_memory_offset_); |
| 1709 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1644 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1710 EXPECT_EQ(0, result->success); | 1645 EXPECT_EQ(0, result->success); |
| 1711 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1646 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1712 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS | 1647 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 1713 result->success = 0; | 1648 result->success = 0; |
| 1714 cmd.Init(client_shader_id_, kUniformIndex, kBucketId, | 1649 cmd.Init(client_shader_id_, kUniformIndex, kBucketId, |
| 1715 shared_memory_id_, shared_memory_offset_); | 1650 shared_memory_id_, shared_memory_offset_); |
| 1716 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1651 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1717 EXPECT_EQ(0, result->success); | 1652 EXPECT_EQ(0, result->success); |
| 1718 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1653 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1719 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS | 1654 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 1720 } | 1655 } |
| 1721 | 1656 |
| 1722 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBadIndexFails) { | 1657 TEST_F(GLES2DecoderWithShaderTest, GetActiveUniformBadIndexFails) { |
| 1723 const uint32 kBucketId = 123; | 1658 const uint32 kBucketId = 123; |
| 1724 GetActiveUniform cmd; | 1659 GetActiveUniform cmd; |
| 1725 typedef GetActiveUniform::Result Result; | 1660 typedef GetActiveUniform::Result Result; |
| 1726 Result* result = static_cast<Result*>(shared_memory_address_); | 1661 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1727 result->success = 0; | 1662 result->success = 0; |
| 1728 cmd.Init(client_program_id_, kBadUniformIndex, kBucketId, | 1663 cmd.Init(client_program_id_, kBadUniformIndex, kBucketId, |
| 1729 shared_memory_id_, shared_memory_offset_); | 1664 shared_memory_id_, shared_memory_offset_); |
| 1730 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1665 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1731 EXPECT_EQ(0, result->success); | 1666 EXPECT_EQ(0, result->success); |
| 1732 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1667 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1733 } | 1668 } |
| 1734 | 1669 |
| 1735 TEST_P(GLES2DecoderWithShaderTest, GetActiveUniformBadSharedMemoryFails) { | 1670 TEST_F(GLES2DecoderWithShaderTest, GetActiveUniformBadSharedMemoryFails) { |
| 1736 const GLuint kUniformIndex = 1; | 1671 const GLuint kUniformIndex = 1; |
| 1737 const uint32 kBucketId = 123; | 1672 const uint32 kBucketId = 123; |
| 1738 GetActiveUniform cmd; | 1673 GetActiveUniform cmd; |
| 1739 cmd.Init(client_program_id_, kUniformIndex, kBucketId, | 1674 cmd.Init(client_program_id_, kUniformIndex, kBucketId, |
| 1740 kInvalidSharedMemoryId, shared_memory_offset_); | 1675 kInvalidSharedMemoryId, shared_memory_offset_); |
| 1741 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1676 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1742 cmd.Init(client_program_id_, kUniformIndex, kBucketId, | 1677 cmd.Init(client_program_id_, kUniformIndex, kBucketId, |
| 1743 shared_memory_id_, kInvalidSharedMemoryOffset); | 1678 shared_memory_id_, kInvalidSharedMemoryOffset); |
| 1744 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1679 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1745 } | 1680 } |
| 1746 | 1681 |
| 1747 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribSucceeds) { | 1682 TEST_F(GLES2DecoderWithShaderTest, GetActiveAttribSucceeds) { |
| 1748 const GLuint kAttribIndex = 1; | 1683 const GLuint kAttribIndex = 1; |
| 1749 const uint32 kBucketId = 123; | 1684 const uint32 kBucketId = 123; |
| 1750 GetActiveAttrib cmd; | 1685 GetActiveAttrib cmd; |
| 1751 typedef GetActiveAttrib::Result Result; | 1686 typedef GetActiveAttrib::Result Result; |
| 1752 Result* result = static_cast<Result*>(shared_memory_address_); | 1687 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1753 result->success = 0; | 1688 result->success = 0; |
| 1754 cmd.Init(client_program_id_, kAttribIndex, kBucketId, | 1689 cmd.Init(client_program_id_, kAttribIndex, kBucketId, |
| 1755 shared_memory_id_, shared_memory_offset_); | 1690 shared_memory_id_, shared_memory_offset_); |
| 1756 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1691 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1757 EXPECT_NE(0, result->success); | 1692 EXPECT_NE(0, result->success); |
| 1758 EXPECT_EQ(kAttrib2Size, result->size); | 1693 EXPECT_EQ(kAttrib2Size, result->size); |
| 1759 EXPECT_EQ(kAttrib2Type, result->type); | 1694 EXPECT_EQ(kAttrib2Type, result->type); |
| 1760 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1695 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1761 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 1696 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 1762 ASSERT_TRUE(bucket != NULL); | 1697 ASSERT_TRUE(bucket != NULL); |
| 1763 EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kAttrib2Name, | 1698 EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kAttrib2Name, |
| 1764 bucket->size())); | 1699 bucket->size())); |
| 1765 } | 1700 } |
| 1766 | 1701 |
| 1767 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribResultNotInitFails) { | 1702 TEST_F(GLES2DecoderWithShaderTest, GetActiveAttribResultNotInitFails) { |
| 1768 const GLuint kAttribIndex = 1; | 1703 const GLuint kAttribIndex = 1; |
| 1769 const uint32 kBucketId = 123; | 1704 const uint32 kBucketId = 123; |
| 1770 GetActiveAttrib cmd; | 1705 GetActiveAttrib cmd; |
| 1771 typedef GetActiveAttrib::Result Result; | 1706 typedef GetActiveAttrib::Result Result; |
| 1772 Result* result = static_cast<Result*>(shared_memory_address_); | 1707 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1773 result->success = 1; | 1708 result->success = 1; |
| 1774 cmd.Init(client_program_id_, kAttribIndex, kBucketId, | 1709 cmd.Init(client_program_id_, kAttribIndex, kBucketId, |
| 1775 shared_memory_id_, shared_memory_offset_); | 1710 shared_memory_id_, shared_memory_offset_); |
| 1776 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1711 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1777 } | 1712 } |
| 1778 | 1713 |
| 1779 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribBadProgramFails) { | 1714 TEST_F(GLES2DecoderWithShaderTest, GetActiveAttribBadProgramFails) { |
| 1780 const GLuint kAttribIndex = 1; | 1715 const GLuint kAttribIndex = 1; |
| 1781 const uint32 kBucketId = 123; | 1716 const uint32 kBucketId = 123; |
| 1782 GetActiveAttrib cmd; | 1717 GetActiveAttrib cmd; |
| 1783 typedef GetActiveAttrib::Result Result; | 1718 typedef GetActiveAttrib::Result Result; |
| 1784 Result* result = static_cast<Result*>(shared_memory_address_); | 1719 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1785 result->success = 0; | 1720 result->success = 0; |
| 1786 cmd.Init(kInvalidClientId, kAttribIndex, kBucketId, | 1721 cmd.Init(kInvalidClientId, kAttribIndex, kBucketId, |
| 1787 shared_memory_id_, shared_memory_offset_); | 1722 shared_memory_id_, shared_memory_offset_); |
| 1788 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1723 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1789 EXPECT_EQ(0, result->success); | 1724 EXPECT_EQ(0, result->success); |
| 1790 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1725 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1791 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS | 1726 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 1792 result->success = 0; | 1727 result->success = 0; |
| 1793 cmd.Init(client_shader_id_, kAttribIndex, kBucketId, | 1728 cmd.Init(client_shader_id_, kAttribIndex, kBucketId, |
| 1794 shared_memory_id_, shared_memory_offset_); | 1729 shared_memory_id_, shared_memory_offset_); |
| 1795 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1730 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1796 EXPECT_EQ(0, result->success); | 1731 EXPECT_EQ(0, result->success); |
| 1797 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1732 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1798 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS | 1733 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 1799 } | 1734 } |
| 1800 | 1735 |
| 1801 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribBadIndexFails) { | 1736 TEST_F(GLES2DecoderWithShaderTest, GetActiveAttribBadIndexFails) { |
| 1802 const uint32 kBucketId = 123; | 1737 const uint32 kBucketId = 123; |
| 1803 GetActiveAttrib cmd; | 1738 GetActiveAttrib cmd; |
| 1804 typedef GetActiveAttrib::Result Result; | 1739 typedef GetActiveAttrib::Result Result; |
| 1805 Result* result = static_cast<Result*>(shared_memory_address_); | 1740 Result* result = static_cast<Result*>(shared_memory_address_); |
| 1806 result->success = 0; | 1741 result->success = 0; |
| 1807 cmd.Init(client_program_id_, kBadAttribIndex, kBucketId, | 1742 cmd.Init(client_program_id_, kBadAttribIndex, kBucketId, |
| 1808 shared_memory_id_, shared_memory_offset_); | 1743 shared_memory_id_, shared_memory_offset_); |
| 1809 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1744 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1810 EXPECT_EQ(0, result->success); | 1745 EXPECT_EQ(0, result->success); |
| 1811 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1746 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1812 } | 1747 } |
| 1813 | 1748 |
| 1814 TEST_P(GLES2DecoderWithShaderTest, GetActiveAttribBadSharedMemoryFails) { | 1749 TEST_F(GLES2DecoderWithShaderTest, GetActiveAttribBadSharedMemoryFails) { |
| 1815 const GLuint kAttribIndex = 1; | 1750 const GLuint kAttribIndex = 1; |
| 1816 const uint32 kBucketId = 123; | 1751 const uint32 kBucketId = 123; |
| 1817 GetActiveAttrib cmd; | 1752 GetActiveAttrib cmd; |
| 1818 cmd.Init(client_program_id_, kAttribIndex, kBucketId, | 1753 cmd.Init(client_program_id_, kAttribIndex, kBucketId, |
| 1819 kInvalidSharedMemoryId, shared_memory_offset_); | 1754 kInvalidSharedMemoryId, shared_memory_offset_); |
| 1820 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1755 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1821 cmd.Init(client_program_id_, kAttribIndex, kBucketId, | 1756 cmd.Init(client_program_id_, kAttribIndex, kBucketId, |
| 1822 shared_memory_id_, kInvalidSharedMemoryOffset); | 1757 shared_memory_id_, kInvalidSharedMemoryOffset); |
| 1823 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1758 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1824 } | 1759 } |
| 1825 | 1760 |
| 1826 TEST_P(GLES2DecoderWithShaderTest, GetShaderInfoLogValidArgs) { | 1761 TEST_F(GLES2DecoderWithShaderTest, GetShaderInfoLogValidArgs) { |
| 1827 const char* kInfo = "hello"; | 1762 const char* kInfo = "hello"; |
| 1828 const uint32 kBucketId = 123; | 1763 const uint32 kBucketId = 123; |
| 1829 CompileShader compile_cmd; | 1764 CompileShader compile_cmd; |
| 1830 GetShaderInfoLog cmd; | 1765 GetShaderInfoLog cmd; |
| 1831 EXPECT_CALL(*gl_, ShaderSource(kServiceShaderId, 1, _, _)); | 1766 EXPECT_CALL(*gl_, ShaderSource(kServiceShaderId, 1, _, _)); |
| 1832 EXPECT_CALL(*gl_, CompileShader(kServiceShaderId)); | 1767 EXPECT_CALL(*gl_, CompileShader(kServiceShaderId)); |
| 1833 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_COMPILE_STATUS, _)) | 1768 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_COMPILE_STATUS, _)) |
| 1834 .WillOnce(SetArgumentPointee<2>(GL_FALSE)) | 1769 .WillOnce(SetArgumentPointee<2>(GL_FALSE)) |
| 1835 .RetiresOnSaturation(); | 1770 .RetiresOnSaturation(); |
| 1836 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_INFO_LOG_LENGTH, _)) | 1771 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_INFO_LOG_LENGTH, _)) |
| 1837 .WillOnce(SetArgumentPointee<2>(strlen(kInfo) + 1)) | 1772 .WillOnce(SetArgumentPointee<2>(strlen(kInfo) + 1)) |
| 1838 .RetiresOnSaturation(); | 1773 .RetiresOnSaturation(); |
| 1839 EXPECT_CALL( | 1774 EXPECT_CALL( |
| 1840 *gl_, GetShaderInfoLog(kServiceShaderId, strlen(kInfo) + 1, _, _)) | 1775 *gl_, GetShaderInfoLog(kServiceShaderId, strlen(kInfo) + 1, _, _)) |
| 1841 .WillOnce(DoAll(SetArgumentPointee<2>(strlen(kInfo)), | 1776 .WillOnce(DoAll(SetArgumentPointee<2>(strlen(kInfo)), |
| 1842 SetArrayArgument<3>(kInfo, kInfo + strlen(kInfo) + 1))); | 1777 SetArrayArgument<3>(kInfo, kInfo + strlen(kInfo) + 1))); |
| 1843 compile_cmd.Init(client_shader_id_); | 1778 compile_cmd.Init(client_shader_id_); |
| 1844 cmd.Init(client_shader_id_, kBucketId); | 1779 cmd.Init(client_shader_id_, kBucketId); |
| 1845 EXPECT_EQ(error::kNoError, ExecuteCmd(compile_cmd)); | 1780 EXPECT_EQ(error::kNoError, ExecuteCmd(compile_cmd)); |
| 1846 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1781 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1847 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 1782 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 1848 ASSERT_TRUE(bucket != NULL); | 1783 ASSERT_TRUE(bucket != NULL); |
| 1849 EXPECT_EQ(strlen(kInfo) + 1, bucket->size()); | 1784 EXPECT_EQ(strlen(kInfo) + 1, bucket->size()); |
| 1850 EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kInfo, | 1785 EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kInfo, |
| 1851 bucket->size())); | 1786 bucket->size())); |
| 1852 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1787 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1853 } | 1788 } |
| 1854 | 1789 |
| 1855 TEST_P(GLES2DecoderWithShaderTest, GetShaderInfoLogInvalidArgs) { | 1790 TEST_F(GLES2DecoderWithShaderTest, GetShaderInfoLogInvalidArgs) { |
| 1856 const uint32 kBucketId = 123; | 1791 const uint32 kBucketId = 123; |
| 1857 GetShaderInfoLog cmd; | 1792 GetShaderInfoLog cmd; |
| 1858 cmd.Init(kInvalidClientId, kBucketId); | 1793 cmd.Init(kInvalidClientId, kBucketId); |
| 1859 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1794 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1860 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1795 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1861 } | 1796 } |
| 1862 | 1797 |
| 1863 TEST_P(GLES2DecoderTest, GetIntegervCached) { | 1798 TEST_F(GLES2DecoderTest, GetIntegervCached) { |
| 1864 struct TestInfo { | 1799 struct TestInfo { |
| 1865 GLenum pname; | 1800 GLenum pname; |
| 1866 GLint expected; | 1801 GLint expected; |
| 1867 }; | 1802 }; |
| 1868 TestInfo tests[] = { | 1803 TestInfo tests[] = { |
| 1869 { GL_MAX_TEXTURE_SIZE, TestHelper::kMaxTextureSize, }, | 1804 { GL_MAX_TEXTURE_SIZE, TestHelper::kMaxTextureSize, }, |
| 1870 { GL_MAX_CUBE_MAP_TEXTURE_SIZE, TestHelper::kMaxCubeMapTextureSize, }, | 1805 { GL_MAX_CUBE_MAP_TEXTURE_SIZE, TestHelper::kMaxCubeMapTextureSize, }, |
| 1871 { GL_MAX_RENDERBUFFER_SIZE, TestHelper::kMaxRenderbufferSize, }, | 1806 { GL_MAX_RENDERBUFFER_SIZE, TestHelper::kMaxRenderbufferSize, }, |
| 1872 }; | 1807 }; |
| 1873 typedef GetIntegerv::Result Result; | 1808 typedef GetIntegerv::Result Result; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1885 cmd2.Init(test.pname, shared_memory_id_, shared_memory_offset_); | 1820 cmd2.Init(test.pname, shared_memory_id_, shared_memory_offset_); |
| 1886 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 1821 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 1887 EXPECT_EQ( | 1822 EXPECT_EQ( |
| 1888 decoder_->GetGLES2Util()->GLGetNumValuesReturned(test.pname), | 1823 decoder_->GetGLES2Util()->GLGetNumValuesReturned(test.pname), |
| 1889 result->GetNumResults()); | 1824 result->GetNumResults()); |
| 1890 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1825 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1891 EXPECT_EQ(test.expected, result->GetData()[0]); | 1826 EXPECT_EQ(test.expected, result->GetData()[0]); |
| 1892 } | 1827 } |
| 1893 } | 1828 } |
| 1894 | 1829 |
| 1895 TEST_P(GLES2DecoderTest, CompileShaderValidArgs) { | 1830 TEST_F(GLES2DecoderTest, CompileShaderValidArgs) { |
| 1896 EXPECT_CALL(*gl_, ShaderSource(kServiceShaderId, 1, _, _)); | 1831 EXPECT_CALL(*gl_, ShaderSource(kServiceShaderId, 1, _, _)); |
| 1897 EXPECT_CALL(*gl_, CompileShader(kServiceShaderId)); | 1832 EXPECT_CALL(*gl_, CompileShader(kServiceShaderId)); |
| 1898 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_COMPILE_STATUS, _)) | 1833 EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_COMPILE_STATUS, _)) |
| 1899 .WillOnce(SetArgumentPointee<2>(GL_TRUE)) | 1834 .WillOnce(SetArgumentPointee<2>(GL_TRUE)) |
| 1900 .RetiresOnSaturation(); | 1835 .RetiresOnSaturation(); |
| 1901 CompileShader cmd; | 1836 CompileShader cmd; |
| 1902 cmd.Init(client_shader_id_); | 1837 cmd.Init(client_shader_id_); |
| 1903 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1838 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1904 } | 1839 } |
| 1905 | 1840 |
| 1906 TEST_P(GLES2DecoderTest, CompileShaderInvalidArgs) { | 1841 TEST_F(GLES2DecoderTest, CompileShaderInvalidArgs) { |
| 1907 CompileShader cmd; | 1842 CompileShader cmd; |
| 1908 cmd.Init(kInvalidClientId); | 1843 cmd.Init(kInvalidClientId); |
| 1909 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1844 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1910 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1845 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1911 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS | 1846 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 1912 cmd.Init(client_program_id_); | 1847 cmd.Init(client_program_id_); |
| 1913 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1848 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1914 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1849 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1915 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS | 1850 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 1916 } | 1851 } |
| 1917 | 1852 |
| 1918 TEST_P(GLES2DecoderTest, ShaderSourceAndGetShaderSourceValidArgs) { | 1853 TEST_F(GLES2DecoderTest, ShaderSourceAndGetShaderSourceValidArgs) { |
| 1919 const uint32 kBucketId = 123; | 1854 const uint32 kBucketId = 123; |
| 1920 const char kSource[] = "hello"; | 1855 const char kSource[] = "hello"; |
| 1921 const uint32 kSourceSize = sizeof(kSource) - 1; | 1856 const uint32 kSourceSize = sizeof(kSource) - 1; |
| 1922 memcpy(shared_memory_address_, kSource, kSourceSize); | 1857 memcpy(shared_memory_address_, kSource, kSourceSize); |
| 1923 ShaderSource cmd; | 1858 ShaderSource cmd; |
| 1924 cmd.Init(client_shader_id_, | 1859 cmd.Init(client_shader_id_, |
| 1925 kSharedMemoryId, kSharedMemoryOffset, kSourceSize); | 1860 kSharedMemoryId, kSharedMemoryOffset, kSourceSize); |
| 1926 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1861 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1927 memset(shared_memory_address_, 0, kSourceSize); | 1862 memset(shared_memory_address_, 0, kSourceSize); |
| 1928 GetShaderSource get_cmd; | 1863 GetShaderSource get_cmd; |
| 1929 get_cmd.Init(client_shader_id_, kBucketId); | 1864 get_cmd.Init(client_shader_id_, kBucketId); |
| 1930 EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd)); | 1865 EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd)); |
| 1931 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 1866 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 1932 ASSERT_TRUE(bucket != NULL); | 1867 ASSERT_TRUE(bucket != NULL); |
| 1933 EXPECT_EQ(kSourceSize + 1, bucket->size()); | 1868 EXPECT_EQ(kSourceSize + 1, bucket->size()); |
| 1934 EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kSource, | 1869 EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kSource, |
| 1935 bucket->size())); | 1870 bucket->size())); |
| 1936 } | 1871 } |
| 1937 | 1872 |
| 1938 TEST_P(GLES2DecoderTest, ShaderSourceInvalidArgs) { | 1873 TEST_F(GLES2DecoderTest, ShaderSourceInvalidArgs) { |
| 1939 const char kSource[] = "hello"; | 1874 const char kSource[] = "hello"; |
| 1940 const uint32 kSourceSize = sizeof(kSource) - 1; | 1875 const uint32 kSourceSize = sizeof(kSource) - 1; |
| 1941 memcpy(shared_memory_address_, kSource, kSourceSize); | 1876 memcpy(shared_memory_address_, kSource, kSourceSize); |
| 1942 ShaderSource cmd; | 1877 ShaderSource cmd; |
| 1943 cmd.Init(kInvalidClientId, | 1878 cmd.Init(kInvalidClientId, |
| 1944 kSharedMemoryId, kSharedMemoryOffset, kSourceSize); | 1879 kSharedMemoryId, kSharedMemoryOffset, kSourceSize); |
| 1945 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1880 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1946 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1881 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1947 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS | 1882 #if GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 1948 cmd.Init(client_program_id_, | 1883 cmd.Init(client_program_id_, |
| 1949 kSharedMemoryId, kSharedMemoryOffset, kSourceSize); | 1884 kSharedMemoryId, kSharedMemoryOffset, kSourceSize); |
| 1950 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1885 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1951 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1886 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 1952 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS | 1887 #endif // GLES2_TEST_SHADER_VS_PROGRAM_IDS |
| 1953 cmd.Init(client_shader_id_, | 1888 cmd.Init(client_shader_id_, |
| 1954 kInvalidSharedMemoryId, kSharedMemoryOffset, kSourceSize); | 1889 kInvalidSharedMemoryId, kSharedMemoryOffset, kSourceSize); |
| 1955 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1890 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1956 cmd.Init(client_shader_id_, | 1891 cmd.Init(client_shader_id_, |
| 1957 kSharedMemoryId, kInvalidSharedMemoryOffset, kSourceSize); | 1892 kSharedMemoryId, kInvalidSharedMemoryOffset, kSourceSize); |
| 1958 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1893 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1959 cmd.Init(client_shader_id_, | 1894 cmd.Init(client_shader_id_, |
| 1960 kSharedMemoryId, kSharedMemoryOffset, kSharedBufferSize); | 1895 kSharedMemoryId, kSharedMemoryOffset, kSharedBufferSize); |
| 1961 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1896 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1962 } | 1897 } |
| 1963 | 1898 |
| 1964 TEST_P(GLES2DecoderTest, ShaderSourceBucketAndGetShaderSourceValidArgs) { | 1899 TEST_F(GLES2DecoderTest, ShaderSourceBucketAndGetShaderSourceValidArgs) { |
| 1965 const uint32 kInBucketId = 123; | 1900 const uint32 kInBucketId = 123; |
| 1966 const uint32 kOutBucketId = 125; | 1901 const uint32 kOutBucketId = 125; |
| 1967 const char kSource[] = "hello"; | 1902 const char kSource[] = "hello"; |
| 1968 const uint32 kSourceSize = sizeof(kSource) - 1; | 1903 const uint32 kSourceSize = sizeof(kSource) - 1; |
| 1969 SetBucketAsCString(kInBucketId, kSource); | 1904 SetBucketAsCString(kInBucketId, kSource); |
| 1970 ShaderSourceBucket cmd; | 1905 ShaderSourceBucket cmd; |
| 1971 cmd.Init(client_shader_id_, kInBucketId); | 1906 cmd.Init(client_shader_id_, kInBucketId); |
| 1972 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1907 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1973 ClearSharedMemory(); | 1908 ClearSharedMemory(); |
| 1974 GetShaderSource get_cmd; | 1909 GetShaderSource get_cmd; |
| 1975 get_cmd.Init(client_shader_id_, kOutBucketId); | 1910 get_cmd.Init(client_shader_id_, kOutBucketId); |
| 1976 EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd)); | 1911 EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd)); |
| 1977 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kOutBucketId); | 1912 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kOutBucketId); |
| 1978 ASSERT_TRUE(bucket != NULL); | 1913 ASSERT_TRUE(bucket != NULL); |
| 1979 EXPECT_EQ(kSourceSize + 1, bucket->size()); | 1914 EXPECT_EQ(kSourceSize + 1, bucket->size()); |
| 1980 EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kSource, | 1915 EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kSource, |
| 1981 bucket->size())); | 1916 bucket->size())); |
| 1982 } | 1917 } |
| 1983 | 1918 |
| 1984 TEST_P(GLES2DecoderTest, ShaderSourceBucketInvalidArgs) { | 1919 TEST_F(GLES2DecoderTest, ShaderSourceBucketInvalidArgs) { |
| 1985 const uint32 kBucketId = 123; | 1920 const uint32 kBucketId = 123; |
| 1986 const char kSource[] = "hello"; | 1921 const char kSource[] = "hello"; |
| 1987 const uint32 kSourceSize = sizeof(kSource) - 1; | 1922 const uint32 kSourceSize = sizeof(kSource) - 1; |
| 1988 memcpy(shared_memory_address_, kSource, kSourceSize); | 1923 memcpy(shared_memory_address_, kSource, kSourceSize); |
| 1989 ShaderSourceBucket cmd; | 1924 ShaderSourceBucket cmd; |
| 1990 // Test no bucket. | 1925 // Test no bucket. |
| 1991 cmd.Init(client_texture_id_, kBucketId); | 1926 cmd.Init(client_texture_id_, kBucketId); |
| 1992 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 1927 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 1993 // Test invalid client. | 1928 // Test invalid client. |
| 1994 SetBucketAsCString(kBucketId, kSource); | 1929 SetBucketAsCString(kBucketId, kSource); |
| 1995 cmd.Init(kInvalidClientId, kBucketId); | 1930 cmd.Init(kInvalidClientId, kBucketId); |
| 1996 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1931 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1997 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1932 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 1998 } | 1933 } |
| 1999 | 1934 |
| 2000 TEST_P(GLES2DecoderTest, ShaderSourceStripComments) { | 1935 TEST_F(GLES2DecoderTest, ShaderSourceStripComments) { |
| 2001 const uint32 kInBucketId = 123; | 1936 const uint32 kInBucketId = 123; |
| 2002 const char kSource[] = "hello/*te\ast*/world//a\ab"; | 1937 const char kSource[] = "hello/*te\ast*/world//a\ab"; |
| 2003 SetBucketAsCString(kInBucketId, kSource); | 1938 SetBucketAsCString(kInBucketId, kSource); |
| 2004 ShaderSourceBucket cmd; | 1939 ShaderSourceBucket cmd; |
| 2005 cmd.Init(client_shader_id_, kInBucketId); | 1940 cmd.Init(client_shader_id_, kInBucketId); |
| 2006 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1941 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2007 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1942 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2008 } | 1943 } |
| 2009 | 1944 |
| 2010 TEST_P(GLES2DecoderTest, GenerateMipmapWrongFormatsFails) { | 1945 TEST_F(GLES2DecoderTest, GenerateMipmapWrongFormatsFails) { |
| 2011 EXPECT_CALL(*gl_, GenerateMipmapEXT(_)) | 1946 EXPECT_CALL(*gl_, GenerateMipmapEXT(_)) |
| 2012 .Times(0); | 1947 .Times(0); |
| 2013 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 1948 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 2014 DoTexImage2D( | 1949 DoTexImage2D( |
| 2015 GL_TEXTURE_2D, 0, GL_RGBA, 16, 17, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 1950 GL_TEXTURE_2D, 0, GL_RGBA, 16, 17, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 2016 0, 0); | 1951 0, 0); |
| 2017 GenerateMipmap cmd; | 1952 GenerateMipmap cmd; |
| 2018 cmd.Init(GL_TEXTURE_2D); | 1953 cmd.Init(GL_TEXTURE_2D); |
| 2019 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1954 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2020 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 1955 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 2021 } | 1956 } |
| 2022 | 1957 |
| 2023 TEST_P(GLES2DecoderTest, GenerateMipmapHandlesOutOfMemory) { | 1958 TEST_F(GLES2DecoderTest, GenerateMipmapHandlesOutOfMemory) { |
| 2024 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 1959 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 2025 TextureManager* manager = group().texture_manager(); | 1960 TextureManager* manager = group().texture_manager(); |
| 2026 TextureRef* texture_ref = manager->GetTexture(client_texture_id_); | 1961 TextureRef* texture_ref = manager->GetTexture(client_texture_id_); |
| 2027 ASSERT_TRUE(texture_ref != NULL); | 1962 ASSERT_TRUE(texture_ref != NULL); |
| 2028 Texture* texture = texture_ref->texture(); | 1963 Texture* texture = texture_ref->texture(); |
| 2029 GLint width = 0; | 1964 GLint width = 0; |
| 2030 GLint height = 0; | 1965 GLint height = 0; |
| 2031 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, 2, &width, &height)); | 1966 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, 2, &width, &height)); |
| 2032 DoTexImage2D( | 1967 DoTexImage2D( |
| 2033 GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 1968 GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 2034 kSharedMemoryId, kSharedMemoryOffset); | 1969 kSharedMemoryId, kSharedMemoryOffset); |
| 2035 EXPECT_CALL(*gl_, GenerateMipmapEXT(GL_TEXTURE_2D)) | 1970 EXPECT_CALL(*gl_, GenerateMipmapEXT(GL_TEXTURE_2D)) |
| 2036 .Times(1); | 1971 .Times(1); |
| 2037 EXPECT_CALL(*gl_, GetError()) | 1972 EXPECT_CALL(*gl_, GetError()) |
| 2038 .WillOnce(Return(GL_NO_ERROR)) | 1973 .WillOnce(Return(GL_NO_ERROR)) |
| 2039 .WillOnce(Return(GL_OUT_OF_MEMORY)) | 1974 .WillOnce(Return(GL_OUT_OF_MEMORY)) |
| 2040 .RetiresOnSaturation(); | 1975 .RetiresOnSaturation(); |
| 2041 GenerateMipmap cmd; | 1976 GenerateMipmap cmd; |
| 2042 cmd.Init(GL_TEXTURE_2D); | 1977 cmd.Init(GL_TEXTURE_2D); |
| 2043 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1978 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2044 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 1979 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 2045 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, 2, &width, &height)); | 1980 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, 2, &width, &height)); |
| 2046 } | 1981 } |
| 2047 | 1982 |
| 2048 TEST_P(GLES2DecoderTest, GenerateMipmapClearsUnclearedTexture) { | 1983 TEST_F(GLES2DecoderTest, GenerateMipmapClearsUnclearedTexture) { |
| 2049 EXPECT_CALL(*gl_, GenerateMipmapEXT(_)) | 1984 EXPECT_CALL(*gl_, GenerateMipmapEXT(_)) |
| 2050 .Times(0); | 1985 .Times(0); |
| 2051 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 1986 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 2052 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 1987 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 2053 0, 0); | 1988 0, 0); |
| 2054 SetupClearTextureExpectations( | 1989 SetupClearTextureExpectations( |
| 2055 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, | 1990 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
| 2056 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); | 1991 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); |
| 2057 EXPECT_CALL(*gl_, GenerateMipmapEXT(GL_TEXTURE_2D)); | 1992 EXPECT_CALL(*gl_, GenerateMipmapEXT(GL_TEXTURE_2D)); |
| 2058 EXPECT_CALL(*gl_, GetError()) | 1993 EXPECT_CALL(*gl_, GetError()) |
| 2059 .WillOnce(Return(GL_NO_ERROR)) | 1994 .WillOnce(Return(GL_NO_ERROR)) |
| 2060 .WillOnce(Return(GL_NO_ERROR)) | 1995 .WillOnce(Return(GL_NO_ERROR)) |
| 2061 .RetiresOnSaturation(); | 1996 .RetiresOnSaturation(); |
| 2062 GenerateMipmap cmd; | 1997 GenerateMipmap cmd; |
| 2063 cmd.Init(GL_TEXTURE_2D); | 1998 cmd.Init(GL_TEXTURE_2D); |
| 2064 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1999 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2065 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2000 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2066 } | 2001 } |
| 2067 | 2002 |
| 2068 // Same as GenerateMipmapClearsUnclearedTexture, but with workaround | 2003 // Same as GenerateMipmapClearsUnclearedTexture, but with workaround |
| 2069 // |set_texture_filters_before_generating_mipmap|. | 2004 // |set_texture_filters_before_generating_mipmap|. |
| 2070 TEST_P(GLES2DecoderManualInitTest, SetTextureFiltersBeforeGenerateMipmap) { | 2005 TEST_F(GLES2DecoderManualInitTest, SetTextureFiltersBeforeGenerateMipmap) { |
| 2071 CommandLine command_line(0, NULL); | 2006 CommandLine command_line(0, NULL); |
| 2072 command_line.AppendSwitchASCII( | 2007 command_line.AppendSwitchASCII( |
| 2073 switches::kGpuDriverBugWorkarounds, | 2008 switches::kGpuDriverBugWorkarounds, |
| 2074 base::IntToString(gpu::SET_TEXTURE_FILTER_BEFORE_GENERATING_MIPMAP)); | 2009 base::IntToString(gpu::SET_TEXTURE_FILTER_BEFORE_GENERATING_MIPMAP)); |
| 2075 InitState init; | 2010 InitState init; |
| 2076 init.gl_version = "3.0"; | 2011 init.gl_version = "3.0"; |
| 2077 init.bind_generates_resource = true; | 2012 init.bind_generates_resource = true; |
| 2078 InitDecoderWithCommandLine(init, &command_line); | 2013 InitDecoderWithCommandLine(init, &command_line); |
| 2079 | 2014 |
| 2080 EXPECT_CALL(*gl_, GenerateMipmapEXT(_)) | 2015 EXPECT_CALL(*gl_, GenerateMipmapEXT(_)) |
| (...skipping 16 matching lines...) Expand all Loading... |
| 2097 EXPECT_CALL(*gl_, GetError()) | 2032 EXPECT_CALL(*gl_, GetError()) |
| 2098 .WillOnce(Return(GL_NO_ERROR)) | 2033 .WillOnce(Return(GL_NO_ERROR)) |
| 2099 .WillOnce(Return(GL_NO_ERROR)) | 2034 .WillOnce(Return(GL_NO_ERROR)) |
| 2100 .RetiresOnSaturation(); | 2035 .RetiresOnSaturation(); |
| 2101 GenerateMipmap cmd; | 2036 GenerateMipmap cmd; |
| 2102 cmd.Init(GL_TEXTURE_2D); | 2037 cmd.Init(GL_TEXTURE_2D); |
| 2103 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2038 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2104 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2039 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2105 } | 2040 } |
| 2106 | 2041 |
| 2107 TEST_P(GLES2DecoderWithShaderTest, Uniform1iValidArgs) { | 2042 TEST_F(GLES2DecoderWithShaderTest, Uniform1iValidArgs) { |
| 2108 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2)); | 2043 EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2)); |
| 2109 Uniform1i cmd; | 2044 Uniform1i cmd; |
| 2110 cmd.Init(kUniform1FakeLocation, 2); | 2045 cmd.Init(kUniform1FakeLocation, 2); |
| 2111 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2046 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2112 } | 2047 } |
| 2113 | 2048 |
| 2114 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivValidArgs) { | 2049 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivValidArgs) { |
| 2115 EXPECT_CALL( | 2050 EXPECT_CALL( |
| 2116 *gl_, Uniform1iv(kUniform1RealLocation, 1, | 2051 *gl_, Uniform1iv(kUniform1RealLocation, 1, |
| 2117 reinterpret_cast<const GLint*>(shared_memory_address_))); | 2052 reinterpret_cast<const GLint*>(shared_memory_address_))); |
| 2118 Uniform1iv cmd; | 2053 Uniform1iv cmd; |
| 2119 cmd.Init(kUniform1FakeLocation, | 2054 cmd.Init(kUniform1FakeLocation, |
| 2120 1, shared_memory_id_, shared_memory_offset_); | 2055 1, shared_memory_id_, shared_memory_offset_); |
| 2121 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2056 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2122 } | 2057 } |
| 2123 | 2058 |
| 2124 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_0) { | 2059 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_0) { |
| 2125 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 2060 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
| 2126 Uniform1iv cmd; | 2061 Uniform1iv cmd; |
| 2127 cmd.Init(kUniform1FakeLocation, | 2062 cmd.Init(kUniform1FakeLocation, |
| 2128 1, kInvalidSharedMemoryId, 0); | 2063 1, kInvalidSharedMemoryId, 0); |
| 2129 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); | 2064 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); |
| 2130 } | 2065 } |
| 2131 | 2066 |
| 2132 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_1) { | 2067 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_1) { |
| 2133 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 2068 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
| 2134 Uniform1iv cmd; | 2069 Uniform1iv cmd; |
| 2135 cmd.Init(kUniform1FakeLocation, | 2070 cmd.Init(kUniform1FakeLocation, |
| 2136 1, shared_memory_id_, kInvalidSharedMemoryOffset); | 2071 1, shared_memory_id_, kInvalidSharedMemoryOffset); |
| 2137 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); | 2072 EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd)); |
| 2138 } | 2073 } |
| 2139 | 2074 |
| 2140 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { | 2075 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { |
| 2141 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); | 2076 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); |
| 2142 EXPECT_CALL( | 2077 EXPECT_CALL( |
| 2143 *gl_, | 2078 *gl_, |
| 2144 Uniform1iv(kUniform1RealLocation, 1, | 2079 Uniform1iv(kUniform1RealLocation, 1, |
| 2145 reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); | 2080 reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); |
| 2146 GLint temp[1 * 2] = { 0, }; | 2081 GLint temp[1 * 2] = { 0, }; |
| 2147 cmd.Init(kUniform1FakeLocation, 1, | 2082 cmd.Init(kUniform1FakeLocation, 1, |
| 2148 &temp[0]); | 2083 &temp[0]); |
| 2149 EXPECT_EQ(error::kNoError, | 2084 EXPECT_EQ(error::kNoError, |
| 2150 ExecuteImmediateCmd(cmd, sizeof(temp))); | 2085 ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 2151 } | 2086 } |
| 2152 | 2087 |
| 2153 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivInvalidValidArgs) { | 2088 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidValidArgs) { |
| 2154 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 2089 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
| 2155 Uniform1iv cmd; | 2090 Uniform1iv cmd; |
| 2156 cmd.Init(kUniform1FakeLocation, | 2091 cmd.Init(kUniform1FakeLocation, |
| 2157 2, shared_memory_id_, shared_memory_offset_); | 2092 2, shared_memory_id_, shared_memory_offset_); |
| 2158 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2093 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2159 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 2094 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 2160 } | 2095 } |
| 2161 | 2096 |
| 2162 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivZeroCount) { | 2097 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivZeroCount) { |
| 2163 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 2098 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
| 2164 Uniform1iv cmd; | 2099 Uniform1iv cmd; |
| 2165 cmd.Init(kUniform1FakeLocation, | 2100 cmd.Init(kUniform1FakeLocation, |
| 2166 0, shared_memory_id_, shared_memory_offset_); | 2101 0, shared_memory_id_, shared_memory_offset_); |
| 2167 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2102 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2168 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2103 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2169 } | 2104 } |
| 2170 | 2105 |
| 2171 TEST_P(GLES2DecoderWithShaderTest, Uniform1iSamplerIsLmited) { | 2106 TEST_F(GLES2DecoderWithShaderTest, Uniform1iSamplerIsLmited) { |
| 2172 EXPECT_CALL(*gl_, Uniform1i(_, _)).Times(0); | 2107 EXPECT_CALL(*gl_, Uniform1i(_, _)).Times(0); |
| 2173 Uniform1i cmd; | 2108 Uniform1i cmd; |
| 2174 cmd.Init( | 2109 cmd.Init( |
| 2175 kUniform1FakeLocation, | 2110 kUniform1FakeLocation, |
| 2176 kNumTextureUnits); | 2111 kNumTextureUnits); |
| 2177 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2112 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2178 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 2113 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 2179 } | 2114 } |
| 2180 | 2115 |
| 2181 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivSamplerIsLimited) { | 2116 TEST_F(GLES2DecoderWithShaderTest, Uniform1ivSamplerIsLimited) { |
| 2182 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); | 2117 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); |
| 2183 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); | 2118 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); |
| 2184 GLint temp[] = { kNumTextureUnits }; | 2119 GLint temp[] = { kNumTextureUnits }; |
| 2185 cmd.Init(kUniform1FakeLocation, 1, | 2120 cmd.Init(kUniform1FakeLocation, 1, |
| 2186 &temp[0]); | 2121 &temp[0]); |
| 2187 EXPECT_EQ(error::kNoError, | 2122 EXPECT_EQ(error::kNoError, |
| 2188 ExecuteImmediateCmd(cmd, sizeof(temp))); | 2123 ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 2189 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 2124 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 2190 } | 2125 } |
| 2191 | 2126 |
| 2192 TEST_P(GLES2DecoderWithShaderTest, BindBufferToDifferentTargetFails) { | 2127 TEST_F(GLES2DecoderWithShaderTest, BindBufferToDifferentTargetFails) { |
| 2193 // Bind the buffer to GL_ARRAY_BUFFER | 2128 // Bind the buffer to GL_ARRAY_BUFFER |
| 2194 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); | 2129 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); |
| 2195 // Attempt to rebind to GL_ELEMENT_ARRAY_BUFFER | 2130 // Attempt to rebind to GL_ELEMENT_ARRAY_BUFFER |
| 2196 // NOTE: Real GLES2 does not have this restriction but WebGL and we do. | 2131 // NOTE: Real GLES2 does not have this restriction but WebGL and we do. |
| 2197 // This can be restriction can be removed at runtime. | 2132 // This can be restriction can be removed at runtime. |
| 2198 EXPECT_CALL(*gl_, BindBuffer(_, _)) | 2133 EXPECT_CALL(*gl_, BindBuffer(_, _)) |
| 2199 .Times(0); | 2134 .Times(0); |
| 2200 BindBuffer cmd; | 2135 BindBuffer cmd; |
| 2201 cmd.Init(GL_ELEMENT_ARRAY_BUFFER, client_buffer_id_); | 2136 cmd.Init(GL_ELEMENT_ARRAY_BUFFER, client_buffer_id_); |
| 2202 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2137 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2203 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 2138 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 2204 } | 2139 } |
| 2205 | 2140 |
| 2206 TEST_P(GLES2DecoderTest, ActiveTextureValidArgs) { | 2141 TEST_F(GLES2DecoderTest, ActiveTextureValidArgs) { |
| 2207 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE1)); | 2142 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE1)); |
| 2208 SpecializedSetup<ActiveTexture, 0>(true); | 2143 SpecializedSetup<ActiveTexture, 0>(true); |
| 2209 ActiveTexture cmd; | 2144 ActiveTexture cmd; |
| 2210 cmd.Init(GL_TEXTURE1); | 2145 cmd.Init(GL_TEXTURE1); |
| 2211 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2146 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2212 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2147 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2213 } | 2148 } |
| 2214 | 2149 |
| 2215 TEST_P(GLES2DecoderTest, ActiveTextureInvalidArgs) { | 2150 TEST_F(GLES2DecoderTest, ActiveTextureInvalidArgs) { |
| 2216 EXPECT_CALL(*gl_, ActiveTexture(_)).Times(0); | 2151 EXPECT_CALL(*gl_, ActiveTexture(_)).Times(0); |
| 2217 SpecializedSetup<ActiveTexture, 0>(false); | 2152 SpecializedSetup<ActiveTexture, 0>(false); |
| 2218 ActiveTexture cmd; | 2153 ActiveTexture cmd; |
| 2219 cmd.Init(GL_TEXTURE0 - 1); | 2154 cmd.Init(GL_TEXTURE0 - 1); |
| 2220 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2155 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2221 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 2156 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 2222 cmd.Init(kNumTextureUnits); | 2157 cmd.Init(kNumTextureUnits); |
| 2223 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2158 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2224 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 2159 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 2225 } | 2160 } |
| 2226 | 2161 |
| 2227 TEST_P(GLES2DecoderTest, CheckFramebufferStatusWithNoBoundTarget) { | 2162 TEST_F(GLES2DecoderTest, CheckFramebufferStatusWithNoBoundTarget) { |
| 2228 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_)) | 2163 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_)) |
| 2229 .Times(0); | 2164 .Times(0); |
| 2230 CheckFramebufferStatus::Result* result = | 2165 CheckFramebufferStatus::Result* result = |
| 2231 static_cast<CheckFramebufferStatus::Result*>(shared_memory_address_); | 2166 static_cast<CheckFramebufferStatus::Result*>(shared_memory_address_); |
| 2232 *result = 0; | 2167 *result = 0; |
| 2233 CheckFramebufferStatus cmd; | 2168 CheckFramebufferStatus cmd; |
| 2234 cmd.Init(GL_FRAMEBUFFER, shared_memory_id_, shared_memory_offset_); | 2169 cmd.Init(GL_FRAMEBUFFER, shared_memory_id_, shared_memory_offset_); |
| 2235 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2170 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2236 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), *result); | 2171 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), *result); |
| 2237 } | 2172 } |
| 2238 | 2173 |
| 2239 TEST_P(GLES2DecoderWithShaderTest, BindAndDeleteFramebuffer) { | 2174 TEST_F(GLES2DecoderWithShaderTest, BindAndDeleteFramebuffer) { |
| 2240 SetupTexture(); | 2175 SetupTexture(); |
| 2241 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); | 2176 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); |
| 2242 SetupExpectationsForApplyingDefaultDirtyState(); | 2177 SetupExpectationsForApplyingDefaultDirtyState(); |
| 2243 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 2178 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 2244 kServiceFramebufferId); | 2179 kServiceFramebufferId); |
| 2245 DoDeleteFramebuffer( | 2180 DoDeleteFramebuffer( |
| 2246 client_framebuffer_id_, kServiceFramebufferId, | 2181 client_framebuffer_id_, kServiceFramebufferId, |
| 2247 true, GL_FRAMEBUFFER, 0, | 2182 true, GL_FRAMEBUFFER, 0, |
| 2248 true, GL_FRAMEBUFFER, 0); | 2183 true, GL_FRAMEBUFFER, 0); |
| 2249 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 2184 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 2250 .Times(1) | 2185 .Times(1) |
| 2251 .RetiresOnSaturation(); | 2186 .RetiresOnSaturation(); |
| 2252 DrawArrays cmd; | 2187 DrawArrays cmd; |
| 2253 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 2188 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 2254 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2189 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2255 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2190 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2256 } | 2191 } |
| 2257 | 2192 |
| 2258 TEST_P(GLES2DecoderTest, FramebufferRenderbufferWithNoBoundTarget) { | 2193 TEST_F(GLES2DecoderTest, FramebufferRenderbufferWithNoBoundTarget) { |
| 2259 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)) | 2194 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)) |
| 2260 .Times(0); | 2195 .Times(0); |
| 2261 FramebufferRenderbuffer cmd; | 2196 FramebufferRenderbuffer cmd; |
| 2262 cmd.Init( | 2197 cmd.Init( |
| 2263 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, | 2198 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, |
| 2264 client_renderbuffer_id_); | 2199 client_renderbuffer_id_); |
| 2265 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2200 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2266 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 2201 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 2267 } | 2202 } |
| 2268 | 2203 |
| 2269 TEST_P(GLES2DecoderTest, FramebufferTexture2DWithNoBoundTarget) { | 2204 TEST_F(GLES2DecoderTest, FramebufferTexture2DWithNoBoundTarget) { |
| 2270 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)) | 2205 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)) |
| 2271 .Times(0); | 2206 .Times(0); |
| 2272 FramebufferTexture2D cmd; | 2207 FramebufferTexture2D cmd; |
| 2273 cmd.Init( | 2208 cmd.Init( |
| 2274 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_, | 2209 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_, |
| 2275 0); | 2210 0); |
| 2276 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2211 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2277 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 2212 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 2278 } | 2213 } |
| 2279 | 2214 |
| 2280 TEST_P(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithNoBoundTarget) { | 2215 TEST_F(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithNoBoundTarget) { |
| 2281 EXPECT_CALL(*gl_, GetError()) | 2216 EXPECT_CALL(*gl_, GetError()) |
| 2282 .WillOnce(Return(GL_NO_ERROR)) | 2217 .WillOnce(Return(GL_NO_ERROR)) |
| 2283 .WillOnce(Return(GL_NO_ERROR)) | 2218 .WillOnce(Return(GL_NO_ERROR)) |
| 2284 .RetiresOnSaturation(); | 2219 .RetiresOnSaturation(); |
| 2285 EXPECT_CALL(*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)) | 2220 EXPECT_CALL(*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)) |
| 2286 .Times(0); | 2221 .Times(0); |
| 2287 GetFramebufferAttachmentParameteriv cmd; | 2222 GetFramebufferAttachmentParameteriv cmd; |
| 2288 cmd.Init( | 2223 cmd.Init( |
| 2289 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, | 2224 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, |
| 2290 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_, | 2225 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_, |
| 2291 shared_memory_offset_); | 2226 shared_memory_offset_); |
| 2292 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2227 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2293 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 2228 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 2294 } | 2229 } |
| 2295 | 2230 |
| 2296 TEST_P(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithRenderbuffer) { | 2231 TEST_F(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithRenderbuffer) { |
| 2297 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 2232 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 2298 kServiceFramebufferId); | 2233 kServiceFramebufferId); |
| 2299 EXPECT_CALL(*gl_, GetError()) | 2234 EXPECT_CALL(*gl_, GetError()) |
| 2300 .WillOnce(Return(GL_NO_ERROR)) | 2235 .WillOnce(Return(GL_NO_ERROR)) |
| 2301 .RetiresOnSaturation(); | 2236 .RetiresOnSaturation(); |
| 2302 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT( | 2237 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT( |
| 2303 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, | 2238 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, |
| 2304 kServiceRenderbufferId)) | 2239 kServiceRenderbufferId)) |
| 2305 .Times(1) | 2240 .Times(1) |
| 2306 .RetiresOnSaturation(); | 2241 .RetiresOnSaturation(); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 2324 cmd.Init( | 2259 cmd.Init( |
| 2325 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, | 2260 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, |
| 2326 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, shared_memory_id_, | 2261 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, shared_memory_id_, |
| 2327 shared_memory_offset_); | 2262 shared_memory_offset_); |
| 2328 EXPECT_EQ(error::kNoError, ExecuteCmd(fbrb_cmd)); | 2263 EXPECT_EQ(error::kNoError, ExecuteCmd(fbrb_cmd)); |
| 2329 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2264 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2330 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2265 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2331 EXPECT_EQ(static_cast<GLuint>(*result_value), client_renderbuffer_id_); | 2266 EXPECT_EQ(static_cast<GLuint>(*result_value), client_renderbuffer_id_); |
| 2332 } | 2267 } |
| 2333 | 2268 |
| 2334 TEST_P(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithTexture) { | 2269 TEST_F(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithTexture) { |
| 2335 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 2270 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 2336 kServiceFramebufferId); | 2271 kServiceFramebufferId); |
| 2337 EXPECT_CALL(*gl_, GetError()) | 2272 EXPECT_CALL(*gl_, GetError()) |
| 2338 .WillOnce(Return(GL_NO_ERROR)) | 2273 .WillOnce(Return(GL_NO_ERROR)) |
| 2339 .RetiresOnSaturation(); | 2274 .RetiresOnSaturation(); |
| 2340 EXPECT_CALL(*gl_, FramebufferTexture2DEXT( | 2275 EXPECT_CALL(*gl_, FramebufferTexture2DEXT( |
| 2341 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, | 2276 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, |
| 2342 kServiceTextureId, 0)) | 2277 kServiceTextureId, 0)) |
| 2343 .Times(1) | 2278 .Times(1) |
| 2344 .RetiresOnSaturation(); | 2279 .RetiresOnSaturation(); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 2362 cmd.Init( | 2297 cmd.Init( |
| 2363 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, | 2298 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, |
| 2364 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, shared_memory_id_, | 2299 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, shared_memory_id_, |
| 2365 shared_memory_offset_); | 2300 shared_memory_offset_); |
| 2366 EXPECT_EQ(error::kNoError, ExecuteCmd(fbtex_cmd)); | 2301 EXPECT_EQ(error::kNoError, ExecuteCmd(fbtex_cmd)); |
| 2367 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2302 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2368 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2303 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 2369 EXPECT_EQ(static_cast<GLuint>(*result_value), client_texture_id_); | 2304 EXPECT_EQ(static_cast<GLuint>(*result_value), client_texture_id_); |
| 2370 } | 2305 } |
| 2371 | 2306 |
| 2372 TEST_P(GLES2DecoderTest, GetRenderbufferParameterivWithNoBoundTarget) { | 2307 TEST_F(GLES2DecoderTest, GetRenderbufferParameterivWithNoBoundTarget) { |
| 2373 EXPECT_CALL(*gl_, GetError()) | 2308 EXPECT_CALL(*gl_, GetError()) |
| 2374 .WillOnce(Return(GL_NO_ERROR)) | 2309 .WillOnce(Return(GL_NO_ERROR)) |
| 2375 .WillOnce(Return(GL_NO_ERROR)) | 2310 .WillOnce(Return(GL_NO_ERROR)) |
| 2376 .RetiresOnSaturation(); | 2311 .RetiresOnSaturation(); |
| 2377 EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)) | 2312 EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)) |
| 2378 .Times(0); | 2313 .Times(0); |
| 2379 GetRenderbufferParameteriv cmd; | 2314 GetRenderbufferParameteriv cmd; |
| 2380 cmd.Init( | 2315 cmd.Init( |
| 2381 GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, shared_memory_id_, | 2316 GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, shared_memory_id_, |
| 2382 shared_memory_offset_); | 2317 shared_memory_offset_); |
| 2383 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2318 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2384 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 2319 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 2385 } | 2320 } |
| 2386 | 2321 |
| 2387 TEST_P(GLES2DecoderTest, RenderbufferStorageWithNoBoundTarget) { | 2322 TEST_F(GLES2DecoderTest, RenderbufferStorageWithNoBoundTarget) { |
| 2388 EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)) | 2323 EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)) |
| 2389 .Times(0); | 2324 .Times(0); |
| 2390 RenderbufferStorage cmd; | 2325 RenderbufferStorage cmd; |
| 2391 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, 4); | 2326 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, 4); |
| 2392 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2327 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2393 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 2328 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 2394 } | 2329 } |
| 2395 | 2330 |
| 2396 namespace { | 2331 namespace { |
| 2397 | 2332 |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2577 // check padding | 2512 // check padding |
| 2578 if (yy != in_read_height - 1) { | 2513 if (yy != in_read_height - 1) { |
| 2579 GLint num_padding_bytes = | 2514 GLint num_padding_bytes = |
| 2580 (kPackAlignment - 1) - (unpadded_row_size % kPackAlignment); | 2515 (kPackAlignment - 1) - (unpadded_row_size % kPackAlignment); |
| 2581 EXPECT_EQ(0, | 2516 EXPECT_EQ(0, |
| 2582 memcmp(pack.get(), row + unpadded_row_size, num_padding_bytes)); | 2517 memcmp(pack.get(), row + unpadded_row_size, num_padding_bytes)); |
| 2583 } | 2518 } |
| 2584 } | 2519 } |
| 2585 } | 2520 } |
| 2586 | 2521 |
| 2587 TEST_P(GLES2DecoderTest, ReadPixels) { | 2522 TEST_F(GLES2DecoderTest, ReadPixels) { |
| 2588 const GLsizei kWidth = 5; | 2523 const GLsizei kWidth = 5; |
| 2589 const GLsizei kHeight = 3; | 2524 const GLsizei kHeight = 3; |
| 2590 const GLint kBytesPerPixel = 3; | 2525 const GLint kBytesPerPixel = 3; |
| 2591 const GLint kPackAlignment = 4; | 2526 const GLint kPackAlignment = 4; |
| 2592 static const int8 kSrcPixels[kWidth * kHeight * kBytesPerPixel] = { | 2527 static const int8 kSrcPixels[kWidth * kHeight * kBytesPerPixel] = { |
| 2593 12, 13, 14, 18, 19, 18, 19, 12, 13, 14, 18, 19, 18, 19, 13, | 2528 12, 13, 14, 18, 19, 18, 19, 12, 13, 14, 18, 19, 18, 19, 13, |
| 2594 29, 28, 23, 22, 21, 22, 21, 29, 28, 23, 22, 21, 22, 21, 28, | 2529 29, 28, 23, 22, 21, 22, 21, 29, 28, 23, 22, 21, 22, 21, 28, |
| 2595 31, 34, 39, 37, 32, 37, 32, 31, 34, 39, 37, 32, 37, 32, 34, | 2530 31, 34, 39, 37, 32, 37, 32, 31, 34, 39, 37, 32, 37, 32, 34, |
| 2596 }; | 2531 }; |
| 2597 | 2532 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 2619 result_shm_id, result_shm_offset, | 2554 result_shm_id, result_shm_offset, |
| 2620 false); | 2555 false); |
| 2621 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2556 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2622 for (GLint yy = 0; yy < kHeight; ++yy) { | 2557 for (GLint yy = 0; yy < kHeight; ++yy) { |
| 2623 EXPECT_TRUE(emu.CompareRowSegment( | 2558 EXPECT_TRUE(emu.CompareRowSegment( |
| 2624 0, yy, kWidth, | 2559 0, yy, kWidth, |
| 2625 emu.ComputePackAlignmentAddress(0, yy, kWidth, dest))); | 2560 emu.ComputePackAlignmentAddress(0, yy, kWidth, dest))); |
| 2626 } | 2561 } |
| 2627 } | 2562 } |
| 2628 | 2563 |
| 2629 TEST_P(GLES2DecoderRGBBackbufferTest, ReadPixelsNoAlphaBackbuffer) { | 2564 TEST_F(GLES2DecoderRGBBackbufferTest, ReadPixelsNoAlphaBackbuffer) { |
| 2630 const GLsizei kWidth = 3; | 2565 const GLsizei kWidth = 3; |
| 2631 const GLsizei kHeight = 3; | 2566 const GLsizei kHeight = 3; |
| 2632 const GLint kBytesPerPixel = 4; | 2567 const GLint kBytesPerPixel = 4; |
| 2633 const GLint kPackAlignment = 4; | 2568 const GLint kPackAlignment = 4; |
| 2634 static const uint8 kExpectedPixels[kWidth * kHeight * kBytesPerPixel] = { | 2569 static const uint8 kExpectedPixels[kWidth * kHeight * kBytesPerPixel] = { |
| 2635 12, 13, 14, 255, 19, 18, 19, 255, 13, 14, 18, 255, | 2570 12, 13, 14, 255, 19, 18, 19, 255, 13, 14, 18, 255, |
| 2636 29, 28, 23, 255, 21, 22, 21, 255, 28, 23, 22, 255, | 2571 29, 28, 23, 255, 21, 22, 21, 255, 28, 23, 22, 255, |
| 2637 31, 34, 39, 255, 32, 37, 32, 255, 34, 39, 37, 255, | 2572 31, 34, 39, 255, 32, 37, 32, 255, 34, 39, 37, 255, |
| 2638 }; | 2573 }; |
| 2639 static const uint8 kSrcPixels[kWidth * kHeight * kBytesPerPixel] = { | 2574 static const uint8 kSrcPixels[kWidth * kHeight * kBytesPerPixel] = { |
| (...skipping 27 matching lines...) Expand all Loading... |
| 2667 result_shm_id, result_shm_offset, | 2602 result_shm_id, result_shm_offset, |
| 2668 false); | 2603 false); |
| 2669 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2604 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2670 for (GLint yy = 0; yy < kHeight; ++yy) { | 2605 for (GLint yy = 0; yy < kHeight; ++yy) { |
| 2671 EXPECT_TRUE(emu.CompareRowSegment( | 2606 EXPECT_TRUE(emu.CompareRowSegment( |
| 2672 0, yy, kWidth, | 2607 0, yy, kWidth, |
| 2673 emu.ComputePackAlignmentAddress(0, yy, kWidth, dest))); | 2608 emu.ComputePackAlignmentAddress(0, yy, kWidth, dest))); |
| 2674 } | 2609 } |
| 2675 } | 2610 } |
| 2676 | 2611 |
| 2677 TEST_P(GLES2DecoderTest, ReadPixelsOutOfRange) { | 2612 TEST_F(GLES2DecoderTest, ReadPixelsOutOfRange) { |
| 2678 static GLint tests[][4] = { | 2613 static GLint tests[][4] = { |
| 2679 { -2, -1, 9, 5, }, // out of range on all sides | 2614 { -2, -1, 9, 5, }, // out of range on all sides |
| 2680 { 2, 1, 9, 5, }, // out of range on right, bottom | 2615 { 2, 1, 9, 5, }, // out of range on right, bottom |
| 2681 { -7, -4, 9, 5, }, // out of range on left, top | 2616 { -7, -4, 9, 5, }, // out of range on left, top |
| 2682 { 0, -5, 9, 5, }, // completely off top | 2617 { 0, -5, 9, 5, }, // completely off top |
| 2683 { 0, 3, 9, 5, }, // completely off bottom | 2618 { 0, 3, 9, 5, }, // completely off bottom |
| 2684 { -9, 0, 9, 5, }, // completely off left | 2619 { -9, 0, 9, 5, }, // completely off left |
| 2685 { 5, 0, 9, 5, }, // completely off right | 2620 { 5, 0, 9, 5, }, // completely off right |
| 2686 }; | 2621 }; |
| 2687 | 2622 |
| 2688 for (size_t tt = 0; tt < arraysize(tests); ++tt) { | 2623 for (size_t tt = 0; tt < arraysize(tests); ++tt) { |
| 2689 CheckReadPixelsOutOfRange( | 2624 CheckReadPixelsOutOfRange( |
| 2690 tests[tt][0], tests[tt][1], tests[tt][2], tests[tt][3], tt == 0); | 2625 tests[tt][0], tests[tt][1], tests[tt][2], tests[tt][3], tt == 0); |
| 2691 } | 2626 } |
| 2692 } | 2627 } |
| 2693 | 2628 |
| 2694 TEST_P(GLES2DecoderTest, ReadPixelsInvalidArgs) { | 2629 TEST_F(GLES2DecoderTest, ReadPixelsInvalidArgs) { |
| 2695 typedef ReadPixels::Result Result; | 2630 typedef ReadPixels::Result Result; |
| 2696 Result* result = GetSharedMemoryAs<Result*>(); | 2631 Result* result = GetSharedMemoryAs<Result*>(); |
| 2697 uint32 result_shm_id = kSharedMemoryId; | 2632 uint32 result_shm_id = kSharedMemoryId; |
| 2698 uint32 result_shm_offset = kSharedMemoryOffset; | 2633 uint32 result_shm_offset = kSharedMemoryOffset; |
| 2699 uint32 pixels_shm_id = kSharedMemoryId; | 2634 uint32 pixels_shm_id = kSharedMemoryId; |
| 2700 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(*result); | 2635 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(*result); |
| 2701 EXPECT_CALL(*gl_, ReadPixels(_, _, _, _, _, _, _)).Times(0); | 2636 EXPECT_CALL(*gl_, ReadPixels(_, _, _, _, _, _, _)).Times(0); |
| 2702 ReadPixels cmd; | 2637 ReadPixels cmd; |
| 2703 cmd.Init(0, 0, -1, 1, GL_RGB, GL_UNSIGNED_BYTE, | 2638 cmd.Init(0, 0, -1, 1, GL_RGB, GL_UNSIGNED_BYTE, |
| 2704 pixels_shm_id, pixels_shm_offset, | 2639 pixels_shm_id, pixels_shm_offset, |
| (...skipping 28 matching lines...) Expand all Loading... |
| 2733 kInvalidSharedMemoryId, result_shm_offset, | 2668 kInvalidSharedMemoryId, result_shm_offset, |
| 2734 false); | 2669 false); |
| 2735 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2670 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2736 cmd.Init(0, 0, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, | 2671 cmd.Init(0, 0, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, |
| 2737 pixels_shm_id, pixels_shm_offset, | 2672 pixels_shm_id, pixels_shm_offset, |
| 2738 result_shm_id, kInvalidSharedMemoryOffset, | 2673 result_shm_id, kInvalidSharedMemoryOffset, |
| 2739 false); | 2674 false); |
| 2740 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2675 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2741 } | 2676 } |
| 2742 | 2677 |
| 2743 TEST_P(GLES2DecoderManualInitTest, ReadPixelsAsyncError) { | 2678 TEST_F(GLES2DecoderManualInitTest, ReadPixelsAsyncError) { |
| 2744 InitState init; | 2679 InitState init; |
| 2745 init.extensions = "GL_ARB_sync"; | 2680 init.extensions = "GL_ARB_sync"; |
| 2746 init.gl_version = "opengl es 3.0"; | 2681 init.gl_version = "opengl es 3.0"; |
| 2747 init.has_alpha = true; | 2682 init.has_alpha = true; |
| 2748 init.request_alpha = true; | 2683 init.request_alpha = true; |
| 2749 init.bind_generates_resource = true; | 2684 init.bind_generates_resource = true; |
| 2750 InitDecoder(init); | 2685 InitDecoder(init); |
| 2751 | 2686 |
| 2752 typedef ReadPixels::Result Result; | 2687 typedef ReadPixels::Result Result; |
| 2753 Result* result = GetSharedMemoryAs<Result*>(); | 2688 Result* result = GetSharedMemoryAs<Result*>(); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 2776 GL_STREAM_READ)).Times(1); | 2711 GL_STREAM_READ)).Times(1); |
| 2777 | 2712 |
| 2778 ReadPixels cmd; | 2713 ReadPixels cmd; |
| 2779 cmd.Init(0, 0, kWidth, kHeight, GL_RGB, GL_UNSIGNED_BYTE, | 2714 cmd.Init(0, 0, kWidth, kHeight, GL_RGB, GL_UNSIGNED_BYTE, |
| 2780 pixels_shm_id, pixels_shm_offset, | 2715 pixels_shm_id, pixels_shm_offset, |
| 2781 result_shm_id, result_shm_offset, | 2716 result_shm_id, result_shm_offset, |
| 2782 true); | 2717 true); |
| 2783 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2718 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2784 } | 2719 } |
| 2785 | 2720 |
| 2786 TEST_P(GLES2DecoderTest, BindAttribLocation) { | 2721 TEST_F(GLES2DecoderTest, BindAttribLocation) { |
| 2787 const GLint kLocation = 2; | 2722 const GLint kLocation = 2; |
| 2788 const char* kName = "testing"; | 2723 const char* kName = "testing"; |
| 2789 const uint32 kNameSize = strlen(kName); | 2724 const uint32 kNameSize = strlen(kName); |
| 2790 EXPECT_CALL( | 2725 EXPECT_CALL( |
| 2791 *gl_, BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) | 2726 *gl_, BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) |
| 2792 .Times(1); | 2727 .Times(1); |
| 2793 memcpy(shared_memory_address_, kName, kNameSize); | 2728 memcpy(shared_memory_address_, kName, kNameSize); |
| 2794 BindAttribLocation cmd; | 2729 BindAttribLocation cmd; |
| 2795 cmd.Init(client_program_id_, kLocation, kSharedMemoryId, kSharedMemoryOffset, | 2730 cmd.Init(client_program_id_, kLocation, kSharedMemoryId, kSharedMemoryOffset, |
| 2796 kNameSize); | 2731 kNameSize); |
| 2797 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2732 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2798 } | 2733 } |
| 2799 | 2734 |
| 2800 TEST_P(GLES2DecoderTest, BindAttribLocationInvalidArgs) { | 2735 TEST_F(GLES2DecoderTest, BindAttribLocationInvalidArgs) { |
| 2801 const GLint kLocation = 2; | 2736 const GLint kLocation = 2; |
| 2802 const char* kName = "testing"; | 2737 const char* kName = "testing"; |
| 2803 const char* kBadName = "test\aing"; | 2738 const char* kBadName = "test\aing"; |
| 2804 const uint32 kNameSize = strlen(kName); | 2739 const uint32 kNameSize = strlen(kName); |
| 2805 const uint32 kBadNameSize = strlen(kBadName); | 2740 const uint32 kBadNameSize = strlen(kBadName); |
| 2806 EXPECT_CALL(*gl_, BindAttribLocation(_, _, _)).Times(0); | 2741 EXPECT_CALL(*gl_, BindAttribLocation(_, _, _)).Times(0); |
| 2807 memcpy(shared_memory_address_, kName, kNameSize); | 2742 memcpy(shared_memory_address_, kName, kNameSize); |
| 2808 BindAttribLocation cmd; | 2743 BindAttribLocation cmd; |
| 2809 cmd.Init(kInvalidClientId, kLocation, | 2744 cmd.Init(kInvalidClientId, kLocation, |
| 2810 kSharedMemoryId, kSharedMemoryOffset, kNameSize); | 2745 kSharedMemoryId, kSharedMemoryOffset, kNameSize); |
| 2811 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2746 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2812 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 2747 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 2813 cmd.Init(client_program_id_, kLocation, | 2748 cmd.Init(client_program_id_, kLocation, |
| 2814 kInvalidSharedMemoryId, kSharedMemoryOffset, kNameSize); | 2749 kInvalidSharedMemoryId, kSharedMemoryOffset, kNameSize); |
| 2815 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2750 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2816 cmd.Init(client_program_id_, kLocation, | 2751 cmd.Init(client_program_id_, kLocation, |
| 2817 kSharedMemoryId, kInvalidSharedMemoryOffset, kNameSize); | 2752 kSharedMemoryId, kInvalidSharedMemoryOffset, kNameSize); |
| 2818 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2753 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2819 cmd.Init(client_program_id_, kLocation, | 2754 cmd.Init(client_program_id_, kLocation, |
| 2820 kSharedMemoryId, kSharedMemoryOffset, kSharedBufferSize); | 2755 kSharedMemoryId, kSharedMemoryOffset, kSharedBufferSize); |
| 2821 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2756 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2822 memcpy(shared_memory_address_, kBadName, kBadNameSize); | 2757 memcpy(shared_memory_address_, kBadName, kBadNameSize); |
| 2823 cmd.Init(client_program_id_, kLocation, | 2758 cmd.Init(client_program_id_, kLocation, |
| 2824 kSharedMemoryId, kSharedMemoryOffset, kBadNameSize); | 2759 kSharedMemoryId, kSharedMemoryOffset, kBadNameSize); |
| 2825 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2760 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2826 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 2761 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 2827 } | 2762 } |
| 2828 | 2763 |
| 2829 TEST_P(GLES2DecoderTest, BindAttribLocationBucket) { | 2764 TEST_F(GLES2DecoderTest, BindAttribLocationBucket) { |
| 2830 const uint32 kBucketId = 123; | 2765 const uint32 kBucketId = 123; |
| 2831 const GLint kLocation = 2; | 2766 const GLint kLocation = 2; |
| 2832 const char* kName = "testing"; | 2767 const char* kName = "testing"; |
| 2833 EXPECT_CALL( | 2768 EXPECT_CALL( |
| 2834 *gl_, BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) | 2769 *gl_, BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) |
| 2835 .Times(1); | 2770 .Times(1); |
| 2836 SetBucketAsCString(kBucketId, kName); | 2771 SetBucketAsCString(kBucketId, kName); |
| 2837 BindAttribLocationBucket cmd; | 2772 BindAttribLocationBucket cmd; |
| 2838 cmd.Init(client_program_id_, kLocation, kBucketId); | 2773 cmd.Init(client_program_id_, kLocation, kBucketId); |
| 2839 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2774 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2840 } | 2775 } |
| 2841 | 2776 |
| 2842 TEST_P(GLES2DecoderTest, BindAttribLocationBucketInvalidArgs) { | 2777 TEST_F(GLES2DecoderTest, BindAttribLocationBucketInvalidArgs) { |
| 2843 const uint32 kBucketId = 123; | 2778 const uint32 kBucketId = 123; |
| 2844 const GLint kLocation = 2; | 2779 const GLint kLocation = 2; |
| 2845 const char* kName = "testing"; | 2780 const char* kName = "testing"; |
| 2846 EXPECT_CALL(*gl_, BindAttribLocation(_, _, _)).Times(0); | 2781 EXPECT_CALL(*gl_, BindAttribLocation(_, _, _)).Times(0); |
| 2847 BindAttribLocationBucket cmd; | 2782 BindAttribLocationBucket cmd; |
| 2848 // check bucket does not exist. | 2783 // check bucket does not exist. |
| 2849 cmd.Init(client_program_id_, kLocation, kBucketId); | 2784 cmd.Init(client_program_id_, kLocation, kBucketId); |
| 2850 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2785 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2851 // check bucket is empty. | 2786 // check bucket is empty. |
| 2852 SetBucketAsCString(kBucketId, NULL); | 2787 SetBucketAsCString(kBucketId, NULL); |
| 2853 cmd.Init(client_program_id_, kLocation, kBucketId); | 2788 cmd.Init(client_program_id_, kLocation, kBucketId); |
| 2854 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2789 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2855 // Check bad program id | 2790 // Check bad program id |
| 2856 SetBucketAsCString(kBucketId, kName); | 2791 SetBucketAsCString(kBucketId, kName); |
| 2857 cmd.Init(kInvalidClientId, kLocation, kBucketId); | 2792 cmd.Init(kInvalidClientId, kLocation, kBucketId); |
| 2858 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2793 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2859 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 2794 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 2860 } | 2795 } |
| 2861 | 2796 |
| 2862 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocation) { | 2797 TEST_F(GLES2DecoderWithShaderTest, GetAttribLocation) { |
| 2863 const uint32 kNameSize = strlen(kAttrib2Name); | 2798 const uint32 kNameSize = strlen(kAttrib2Name); |
| 2864 const char* kNonExistentName = "foobar"; | 2799 const char* kNonExistentName = "foobar"; |
| 2865 const uint32 kNonExistentNameSize = strlen(kNonExistentName); | 2800 const uint32 kNonExistentNameSize = strlen(kNonExistentName); |
| 2866 typedef GetAttribLocation::Result Result; | 2801 typedef GetAttribLocation::Result Result; |
| 2867 Result* result = GetSharedMemoryAs<Result*>(); | 2802 Result* result = GetSharedMemoryAs<Result*>(); |
| 2868 *result = -1; | 2803 *result = -1; |
| 2869 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); | 2804 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); |
| 2870 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); | 2805 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); |
| 2871 memcpy(name, kAttrib2Name, kNameSize); | 2806 memcpy(name, kAttrib2Name, kNameSize); |
| 2872 GetAttribLocation cmd; | 2807 GetAttribLocation cmd; |
| 2873 cmd.Init(client_program_id_, | 2808 cmd.Init(client_program_id_, |
| 2874 kSharedMemoryId, kNameOffset, | 2809 kSharedMemoryId, kNameOffset, |
| 2875 kSharedMemoryId, kSharedMemoryOffset, | 2810 kSharedMemoryId, kSharedMemoryOffset, |
| 2876 kNameSize); | 2811 kNameSize); |
| 2877 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2812 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2878 EXPECT_EQ(kAttrib2Location, *result); | 2813 EXPECT_EQ(kAttrib2Location, *result); |
| 2879 *result = -1; | 2814 *result = -1; |
| 2880 memcpy(name, kNonExistentName, kNonExistentNameSize); | 2815 memcpy(name, kNonExistentName, kNonExistentNameSize); |
| 2881 cmd.Init(client_program_id_, | 2816 cmd.Init(client_program_id_, |
| 2882 kSharedMemoryId, kNameOffset, | 2817 kSharedMemoryId, kNameOffset, |
| 2883 kSharedMemoryId, kSharedMemoryOffset, | 2818 kSharedMemoryId, kSharedMemoryOffset, |
| 2884 kNonExistentNameSize); | 2819 kNonExistentNameSize); |
| 2885 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2820 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2886 EXPECT_EQ(-1, *result); | 2821 EXPECT_EQ(-1, *result); |
| 2887 } | 2822 } |
| 2888 | 2823 |
| 2889 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocationInvalidArgs) { | 2824 TEST_F(GLES2DecoderWithShaderTest, GetAttribLocationInvalidArgs) { |
| 2890 const uint32 kNameSize = strlen(kAttrib2Name); | 2825 const uint32 kNameSize = strlen(kAttrib2Name); |
| 2891 const char* kBadName = "foo\abar"; | 2826 const char* kBadName = "foo\abar"; |
| 2892 const uint32 kBadNameSize = strlen(kBadName); | 2827 const uint32 kBadNameSize = strlen(kBadName); |
| 2893 typedef GetAttribLocation::Result Result; | 2828 typedef GetAttribLocation::Result Result; |
| 2894 Result* result = GetSharedMemoryAs<Result*>(); | 2829 Result* result = GetSharedMemoryAs<Result*>(); |
| 2895 *result = -1; | 2830 *result = -1; |
| 2896 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); | 2831 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); |
| 2897 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); | 2832 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); |
| 2898 memcpy(name, kAttrib2Name, kNameSize); | 2833 memcpy(name, kAttrib2Name, kNameSize); |
| 2899 GetAttribLocation cmd; | 2834 GetAttribLocation cmd; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2937 EXPECT_EQ(-1, *result); | 2872 EXPECT_EQ(-1, *result); |
| 2938 memcpy(name, kBadName, kBadNameSize); | 2873 memcpy(name, kBadName, kBadNameSize); |
| 2939 cmd.Init(client_program_id_, | 2874 cmd.Init(client_program_id_, |
| 2940 kSharedMemoryId, kNameOffset, | 2875 kSharedMemoryId, kNameOffset, |
| 2941 kSharedMemoryId, kSharedMemoryOffset, | 2876 kSharedMemoryId, kSharedMemoryOffset, |
| 2942 kBadNameSize); | 2877 kBadNameSize); |
| 2943 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2878 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2944 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 2879 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 2945 } | 2880 } |
| 2946 | 2881 |
| 2947 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocationBucket) { | 2882 TEST_F(GLES2DecoderWithShaderTest, GetAttribLocationBucket) { |
| 2948 const uint32 kBucketId = 123; | 2883 const uint32 kBucketId = 123; |
| 2949 const char* kNonExistentName = "foobar"; | 2884 const char* kNonExistentName = "foobar"; |
| 2950 typedef GetAttribLocationBucket::Result Result; | 2885 typedef GetAttribLocationBucket::Result Result; |
| 2951 Result* result = GetSharedMemoryAs<Result*>(); | 2886 Result* result = GetSharedMemoryAs<Result*>(); |
| 2952 SetBucketAsCString(kBucketId, kAttrib2Name); | 2887 SetBucketAsCString(kBucketId, kAttrib2Name); |
| 2953 *result = -1; | 2888 *result = -1; |
| 2954 GetAttribLocationBucket cmd; | 2889 GetAttribLocationBucket cmd; |
| 2955 cmd.Init(client_program_id_, kBucketId, | 2890 cmd.Init(client_program_id_, kBucketId, |
| 2956 kSharedMemoryId, kSharedMemoryOffset); | 2891 kSharedMemoryId, kSharedMemoryOffset); |
| 2957 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2892 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2958 EXPECT_EQ(kAttrib2Location, *result); | 2893 EXPECT_EQ(kAttrib2Location, *result); |
| 2959 SetBucketAsCString(kBucketId, kNonExistentName); | 2894 SetBucketAsCString(kBucketId, kNonExistentName); |
| 2960 *result = -1; | 2895 *result = -1; |
| 2961 cmd.Init(client_program_id_, kBucketId, | 2896 cmd.Init(client_program_id_, kBucketId, |
| 2962 kSharedMemoryId, kSharedMemoryOffset); | 2897 kSharedMemoryId, kSharedMemoryOffset); |
| 2963 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2898 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2964 EXPECT_EQ(-1, *result); | 2899 EXPECT_EQ(-1, *result); |
| 2965 } | 2900 } |
| 2966 | 2901 |
| 2967 TEST_P(GLES2DecoderWithShaderTest, GetAttribLocationBucketInvalidArgs) { | 2902 TEST_F(GLES2DecoderWithShaderTest, GetAttribLocationBucketInvalidArgs) { |
| 2968 const uint32 kBucketId = 123; | 2903 const uint32 kBucketId = 123; |
| 2969 typedef GetAttribLocationBucket::Result Result; | 2904 typedef GetAttribLocationBucket::Result Result; |
| 2970 Result* result = GetSharedMemoryAs<Result*>(); | 2905 Result* result = GetSharedMemoryAs<Result*>(); |
| 2971 *result = -1; | 2906 *result = -1; |
| 2972 GetAttribLocationBucket cmd; | 2907 GetAttribLocationBucket cmd; |
| 2973 // Check no bucket | 2908 // Check no bucket |
| 2974 cmd.Init(client_program_id_, kBucketId, | 2909 cmd.Init(client_program_id_, kBucketId, |
| 2975 kSharedMemoryId, kSharedMemoryOffset); | 2910 kSharedMemoryId, kSharedMemoryOffset); |
| 2976 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2911 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2977 EXPECT_EQ(-1, *result); | 2912 EXPECT_EQ(-1, *result); |
| 2978 // Check bad program id. | 2913 // Check bad program id. |
| 2979 SetBucketAsCString(kBucketId, kAttrib2Name); | 2914 SetBucketAsCString(kBucketId, kAttrib2Name); |
| 2980 cmd.Init(kInvalidClientId, kBucketId, | 2915 cmd.Init(kInvalidClientId, kBucketId, |
| 2981 kSharedMemoryId, kSharedMemoryOffset); | 2916 kSharedMemoryId, kSharedMemoryOffset); |
| 2982 *result = -1; | 2917 *result = -1; |
| 2983 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2918 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 2984 EXPECT_EQ(-1, *result); | 2919 EXPECT_EQ(-1, *result); |
| 2985 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 2920 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 2986 // Check bad memory | 2921 // Check bad memory |
| 2987 cmd.Init(client_program_id_, kBucketId, | 2922 cmd.Init(client_program_id_, kBucketId, |
| 2988 kInvalidSharedMemoryId, kSharedMemoryOffset); | 2923 kInvalidSharedMemoryId, kSharedMemoryOffset); |
| 2989 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2924 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2990 cmd.Init(client_program_id_, kBucketId, | 2925 cmd.Init(client_program_id_, kBucketId, |
| 2991 kSharedMemoryId, kInvalidSharedMemoryOffset); | 2926 kSharedMemoryId, kInvalidSharedMemoryOffset); |
| 2992 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2927 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 2993 } | 2928 } |
| 2994 | 2929 |
| 2995 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocation) { | 2930 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocation) { |
| 2996 const uint32 kNameSize = strlen(kUniform2Name); | 2931 const uint32 kNameSize = strlen(kUniform2Name); |
| 2997 const char* kNonExistentName = "foobar"; | 2932 const char* kNonExistentName = "foobar"; |
| 2998 const uint32 kNonExistentNameSize = strlen(kNonExistentName); | 2933 const uint32 kNonExistentNameSize = strlen(kNonExistentName); |
| 2999 typedef GetUniformLocation::Result Result; | 2934 typedef GetUniformLocation::Result Result; |
| 3000 Result* result = GetSharedMemoryAs<Result*>(); | 2935 Result* result = GetSharedMemoryAs<Result*>(); |
| 3001 *result = -1; | 2936 *result = -1; |
| 3002 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); | 2937 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); |
| 3003 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); | 2938 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); |
| 3004 memcpy(name, kUniform2Name, kNameSize); | 2939 memcpy(name, kUniform2Name, kNameSize); |
| 3005 GetUniformLocation cmd; | 2940 GetUniformLocation cmd; |
| 3006 cmd.Init(client_program_id_, | 2941 cmd.Init(client_program_id_, |
| 3007 kSharedMemoryId, kNameOffset, | 2942 kSharedMemoryId, kNameOffset, |
| 3008 kSharedMemoryId, kSharedMemoryOffset, | 2943 kSharedMemoryId, kSharedMemoryOffset, |
| 3009 kNameSize); | 2944 kNameSize); |
| 3010 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2945 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3011 EXPECT_EQ(kUniform2FakeLocation, *result); | 2946 EXPECT_EQ(kUniform2FakeLocation, *result); |
| 3012 memcpy(name, kNonExistentName, kNonExistentNameSize); | 2947 memcpy(name, kNonExistentName, kNonExistentNameSize); |
| 3013 *result = -1; | 2948 *result = -1; |
| 3014 cmd.Init(client_program_id_, | 2949 cmd.Init(client_program_id_, |
| 3015 kSharedMemoryId, kNameOffset, | 2950 kSharedMemoryId, kNameOffset, |
| 3016 kSharedMemoryId, kSharedMemoryOffset, | 2951 kSharedMemoryId, kSharedMemoryOffset, |
| 3017 kNonExistentNameSize); | 2952 kNonExistentNameSize); |
| 3018 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2953 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3019 EXPECT_EQ(-1, *result); | 2954 EXPECT_EQ(-1, *result); |
| 3020 } | 2955 } |
| 3021 | 2956 |
| 3022 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocationInvalidArgs) { | 2957 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationInvalidArgs) { |
| 3023 const uint32 kNameSize = strlen(kUniform2Name); | 2958 const uint32 kNameSize = strlen(kUniform2Name); |
| 3024 const char* kBadName = "foo\abar"; | 2959 const char* kBadName = "foo\abar"; |
| 3025 const uint32 kBadNameSize = strlen(kBadName); | 2960 const uint32 kBadNameSize = strlen(kBadName); |
| 3026 typedef GetUniformLocation::Result Result; | 2961 typedef GetUniformLocation::Result Result; |
| 3027 Result* result = GetSharedMemoryAs<Result*>(); | 2962 Result* result = GetSharedMemoryAs<Result*>(); |
| 3028 *result = -1; | 2963 *result = -1; |
| 3029 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); | 2964 char* name = GetSharedMemoryAsWithOffset<char*>(sizeof(*result)); |
| 3030 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); | 2965 const uint32 kNameOffset = kSharedMemoryOffset + sizeof(*result); |
| 3031 memcpy(name, kUniform2Name, kNameSize); | 2966 memcpy(name, kUniform2Name, kNameSize); |
| 3032 GetUniformLocation cmd; | 2967 GetUniformLocation cmd; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3070 EXPECT_EQ(-1, *result); | 3005 EXPECT_EQ(-1, *result); |
| 3071 memcpy(name, kBadName, kBadNameSize); | 3006 memcpy(name, kBadName, kBadNameSize); |
| 3072 cmd.Init(client_program_id_, | 3007 cmd.Init(client_program_id_, |
| 3073 kSharedMemoryId, kNameOffset, | 3008 kSharedMemoryId, kNameOffset, |
| 3074 kSharedMemoryId, kSharedMemoryOffset, | 3009 kSharedMemoryId, kSharedMemoryOffset, |
| 3075 kBadNameSize); | 3010 kBadNameSize); |
| 3076 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3011 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3077 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 3012 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 3078 } | 3013 } |
| 3079 | 3014 |
| 3080 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocationBucket) { | 3015 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationBucket) { |
| 3081 const uint32 kBucketId = 123; | 3016 const uint32 kBucketId = 123; |
| 3082 const char* kNonExistentName = "foobar"; | 3017 const char* kNonExistentName = "foobar"; |
| 3083 typedef GetUniformLocationBucket::Result Result; | 3018 typedef GetUniformLocationBucket::Result Result; |
| 3084 Result* result = GetSharedMemoryAs<Result*>(); | 3019 Result* result = GetSharedMemoryAs<Result*>(); |
| 3085 SetBucketAsCString(kBucketId, kUniform2Name); | 3020 SetBucketAsCString(kBucketId, kUniform2Name); |
| 3086 *result = -1; | 3021 *result = -1; |
| 3087 GetUniformLocationBucket cmd; | 3022 GetUniformLocationBucket cmd; |
| 3088 cmd.Init(client_program_id_, kBucketId, | 3023 cmd.Init(client_program_id_, kBucketId, |
| 3089 kSharedMemoryId, kSharedMemoryOffset); | 3024 kSharedMemoryId, kSharedMemoryOffset); |
| 3090 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3025 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3091 EXPECT_EQ(kUniform2FakeLocation, *result); | 3026 EXPECT_EQ(kUniform2FakeLocation, *result); |
| 3092 SetBucketAsCString(kBucketId, kNonExistentName); | 3027 SetBucketAsCString(kBucketId, kNonExistentName); |
| 3093 *result = -1; | 3028 *result = -1; |
| 3094 cmd.Init(client_program_id_, kBucketId, | 3029 cmd.Init(client_program_id_, kBucketId, |
| 3095 kSharedMemoryId, kSharedMemoryOffset); | 3030 kSharedMemoryId, kSharedMemoryOffset); |
| 3096 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3031 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3097 EXPECT_EQ(-1, *result); | 3032 EXPECT_EQ(-1, *result); |
| 3098 } | 3033 } |
| 3099 | 3034 |
| 3100 TEST_P(GLES2DecoderWithShaderTest, GetUniformLocationBucketInvalidArgs) { | 3035 TEST_F(GLES2DecoderWithShaderTest, GetUniformLocationBucketInvalidArgs) { |
| 3101 const uint32 kBucketId = 123; | 3036 const uint32 kBucketId = 123; |
| 3102 typedef GetUniformLocationBucket::Result Result; | 3037 typedef GetUniformLocationBucket::Result Result; |
| 3103 Result* result = GetSharedMemoryAs<Result*>(); | 3038 Result* result = GetSharedMemoryAs<Result*>(); |
| 3104 *result = -1; | 3039 *result = -1; |
| 3105 GetUniformLocationBucket cmd; | 3040 GetUniformLocationBucket cmd; |
| 3106 // Check no bucket | 3041 // Check no bucket |
| 3107 cmd.Init(client_program_id_, kBucketId, | 3042 cmd.Init(client_program_id_, kBucketId, |
| 3108 kSharedMemoryId, kSharedMemoryOffset); | 3043 kSharedMemoryId, kSharedMemoryOffset); |
| 3109 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3044 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3110 EXPECT_EQ(-1, *result); | 3045 EXPECT_EQ(-1, *result); |
| 3111 // Check bad program id. | 3046 // Check bad program id. |
| 3112 SetBucketAsCString(kBucketId, kUniform2Name); | 3047 SetBucketAsCString(kBucketId, kUniform2Name); |
| 3113 cmd.Init(kInvalidClientId, kBucketId, | 3048 cmd.Init(kInvalidClientId, kBucketId, |
| 3114 kSharedMemoryId, kSharedMemoryOffset); | 3049 kSharedMemoryId, kSharedMemoryOffset); |
| 3115 *result = -1; | 3050 *result = -1; |
| 3116 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3051 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3117 EXPECT_EQ(-1, *result); | 3052 EXPECT_EQ(-1, *result); |
| 3118 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 3053 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 3119 // Check bad memory | 3054 // Check bad memory |
| 3120 cmd.Init(client_program_id_, kBucketId, | 3055 cmd.Init(client_program_id_, kBucketId, |
| 3121 kInvalidSharedMemoryId, kSharedMemoryOffset); | 3056 kInvalidSharedMemoryId, kSharedMemoryOffset); |
| 3122 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3057 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3123 cmd.Init(client_program_id_, kBucketId, | 3058 cmd.Init(client_program_id_, kBucketId, |
| 3124 kSharedMemoryId, kInvalidSharedMemoryOffset); | 3059 kSharedMemoryId, kInvalidSharedMemoryOffset); |
| 3125 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3060 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3126 } | 3061 } |
| 3127 | 3062 |
| 3128 TEST_P(GLES2DecoderWithShaderTest, GetMaxValueInBufferCHROMIUM) { | 3063 TEST_F(GLES2DecoderWithShaderTest, GetMaxValueInBufferCHROMIUM) { |
| 3129 SetupIndexBuffer(); | 3064 SetupIndexBuffer(); |
| 3130 GetMaxValueInBufferCHROMIUM::Result* result = | 3065 GetMaxValueInBufferCHROMIUM::Result* result = |
| 3131 static_cast<GetMaxValueInBufferCHROMIUM::Result*>(shared_memory_address_); | 3066 static_cast<GetMaxValueInBufferCHROMIUM::Result*>(shared_memory_address_); |
| 3132 *result = 0; | 3067 *result = 0; |
| 3133 | 3068 |
| 3134 GetMaxValueInBufferCHROMIUM cmd; | 3069 GetMaxValueInBufferCHROMIUM cmd; |
| 3135 cmd.Init(client_element_buffer_id_, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 3070 cmd.Init(client_element_buffer_id_, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 3136 kValidIndexRangeStart * 2, kSharedMemoryId, kSharedMemoryOffset); | 3071 kValidIndexRangeStart * 2, kSharedMemoryId, kSharedMemoryOffset); |
| 3137 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3072 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3138 EXPECT_EQ(7u, *result); | 3073 EXPECT_EQ(7u, *result); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3173 kValidIndexRangeStart * 2, | 3108 kValidIndexRangeStart * 2, |
| 3174 kInvalidSharedMemoryId, kSharedMemoryOffset); | 3109 kInvalidSharedMemoryId, kSharedMemoryOffset); |
| 3175 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3110 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3176 cmd.Init(client_element_buffer_id_, kValidIndexRangeCount + 1, | 3111 cmd.Init(client_element_buffer_id_, kValidIndexRangeCount + 1, |
| 3177 GL_UNSIGNED_SHORT, | 3112 GL_UNSIGNED_SHORT, |
| 3178 kValidIndexRangeStart * 2, | 3113 kValidIndexRangeStart * 2, |
| 3179 kSharedMemoryId, kInvalidSharedMemoryOffset); | 3114 kSharedMemoryId, kInvalidSharedMemoryOffset); |
| 3180 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3115 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3181 } | 3116 } |
| 3182 | 3117 |
| 3183 TEST_P(GLES2DecoderTest, SharedIds) { | 3118 TEST_F(GLES2DecoderTest, SharedIds) { |
| 3184 GenSharedIdsCHROMIUM gen_cmd; | 3119 GenSharedIdsCHROMIUM gen_cmd; |
| 3185 RegisterSharedIdsCHROMIUM reg_cmd; | 3120 RegisterSharedIdsCHROMIUM reg_cmd; |
| 3186 DeleteSharedIdsCHROMIUM del_cmd; | 3121 DeleteSharedIdsCHROMIUM del_cmd; |
| 3187 | 3122 |
| 3188 const GLuint kNamespaceId = id_namespaces::kTextures; | 3123 const GLuint kNamespaceId = id_namespaces::kTextures; |
| 3189 const GLuint kExpectedId1 = 1; | 3124 const GLuint kExpectedId1 = 1; |
| 3190 const GLuint kExpectedId2 = 2; | 3125 const GLuint kExpectedId2 = 2; |
| 3191 const GLuint kExpectedId3 = 4; | 3126 const GLuint kExpectedId3 = 4; |
| 3192 const GLuint kRegisterId = 3; | 3127 const GLuint kRegisterId = 3; |
| 3193 GLuint* ids = GetSharedMemoryAs<GLuint*>(); | 3128 GLuint* ids = GetSharedMemoryAs<GLuint*>(); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3244 | 3179 |
| 3245 // Check passing in an id_offset. | 3180 // Check passing in an id_offset. |
| 3246 ClearSharedMemory(); | 3181 ClearSharedMemory(); |
| 3247 const GLuint kOffset = 0xABCDEF; | 3182 const GLuint kOffset = 0xABCDEF; |
| 3248 gen_cmd.Init(kNamespaceId, kOffset, 2, kSharedMemoryId, kSharedMemoryOffset); | 3183 gen_cmd.Init(kNamespaceId, kOffset, 2, kSharedMemoryId, kSharedMemoryOffset); |
| 3249 EXPECT_EQ(error::kNoError, ExecuteCmd(gen_cmd)); | 3184 EXPECT_EQ(error::kNoError, ExecuteCmd(gen_cmd)); |
| 3250 EXPECT_EQ(kOffset, ids[0]); | 3185 EXPECT_EQ(kOffset, ids[0]); |
| 3251 EXPECT_EQ(kOffset + 1, ids[1]); | 3186 EXPECT_EQ(kOffset + 1, ids[1]); |
| 3252 } | 3187 } |
| 3253 | 3188 |
| 3254 TEST_P(GLES2DecoderTest, GenSharedIdsCHROMIUMBadArgs) { | 3189 TEST_F(GLES2DecoderTest, GenSharedIdsCHROMIUMBadArgs) { |
| 3255 const GLuint kNamespaceId = id_namespaces::kTextures; | 3190 const GLuint kNamespaceId = id_namespaces::kTextures; |
| 3256 GenSharedIdsCHROMIUM cmd; | 3191 GenSharedIdsCHROMIUM cmd; |
| 3257 cmd.Init(kNamespaceId, 0, -1, kSharedMemoryId, kSharedMemoryOffset); | 3192 cmd.Init(kNamespaceId, 0, -1, kSharedMemoryId, kSharedMemoryOffset); |
| 3258 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3193 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3259 cmd.Init(kNamespaceId, 0, 1, kInvalidSharedMemoryId, kSharedMemoryOffset); | 3194 cmd.Init(kNamespaceId, 0, 1, kInvalidSharedMemoryId, kSharedMemoryOffset); |
| 3260 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3195 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3261 cmd.Init(kNamespaceId, 0, 1, kSharedMemoryId, kInvalidSharedMemoryOffset); | 3196 cmd.Init(kNamespaceId, 0, 1, kSharedMemoryId, kInvalidSharedMemoryOffset); |
| 3262 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3197 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3263 } | 3198 } |
| 3264 | 3199 |
| 3265 TEST_P(GLES2DecoderTest, RegisterSharedIdsCHROMIUMBadArgs) { | 3200 TEST_F(GLES2DecoderTest, RegisterSharedIdsCHROMIUMBadArgs) { |
| 3266 const GLuint kNamespaceId = id_namespaces::kTextures; | 3201 const GLuint kNamespaceId = id_namespaces::kTextures; |
| 3267 RegisterSharedIdsCHROMIUM cmd; | 3202 RegisterSharedIdsCHROMIUM cmd; |
| 3268 cmd.Init(kNamespaceId, -1, kSharedMemoryId, kSharedMemoryOffset); | 3203 cmd.Init(kNamespaceId, -1, kSharedMemoryId, kSharedMemoryOffset); |
| 3269 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3204 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3270 cmd.Init(kNamespaceId, 1, kInvalidSharedMemoryId, kSharedMemoryOffset); | 3205 cmd.Init(kNamespaceId, 1, kInvalidSharedMemoryId, kSharedMemoryOffset); |
| 3271 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3206 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3272 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kInvalidSharedMemoryOffset); | 3207 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kInvalidSharedMemoryOffset); |
| 3273 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3208 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3274 } | 3209 } |
| 3275 | 3210 |
| 3276 TEST_P(GLES2DecoderTest, RegisterSharedIdsCHROMIUMDuplicateIds) { | 3211 TEST_F(GLES2DecoderTest, RegisterSharedIdsCHROMIUMDuplicateIds) { |
| 3277 const GLuint kNamespaceId = id_namespaces::kTextures; | 3212 const GLuint kNamespaceId = id_namespaces::kTextures; |
| 3278 const GLuint kRegisterId = 3; | 3213 const GLuint kRegisterId = 3; |
| 3279 RegisterSharedIdsCHROMIUM cmd; | 3214 RegisterSharedIdsCHROMIUM cmd; |
| 3280 GLuint* ids = GetSharedMemoryAs<GLuint*>(); | 3215 GLuint* ids = GetSharedMemoryAs<GLuint*>(); |
| 3281 ids[0] = kRegisterId; | 3216 ids[0] = kRegisterId; |
| 3282 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kSharedMemoryOffset); | 3217 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kSharedMemoryOffset); |
| 3283 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3218 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3284 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kSharedMemoryOffset); | 3219 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kSharedMemoryOffset); |
| 3285 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3220 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3286 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 3221 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 3287 } | 3222 } |
| 3288 | 3223 |
| 3289 TEST_P(GLES2DecoderTest, DeleteSharedIdsCHROMIUMBadArgs) { | 3224 TEST_F(GLES2DecoderTest, DeleteSharedIdsCHROMIUMBadArgs) { |
| 3290 const GLuint kNamespaceId = id_namespaces::kTextures; | 3225 const GLuint kNamespaceId = id_namespaces::kTextures; |
| 3291 DeleteSharedIdsCHROMIUM cmd; | 3226 DeleteSharedIdsCHROMIUM cmd; |
| 3292 cmd.Init(kNamespaceId, -1, kSharedMemoryId, kSharedMemoryOffset); | 3227 cmd.Init(kNamespaceId, -1, kSharedMemoryId, kSharedMemoryOffset); |
| 3293 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3228 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3294 cmd.Init(kNamespaceId, 1, kInvalidSharedMemoryId, kSharedMemoryOffset); | 3229 cmd.Init(kNamespaceId, 1, kInvalidSharedMemoryId, kSharedMemoryOffset); |
| 3295 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3230 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3296 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kInvalidSharedMemoryOffset); | 3231 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kInvalidSharedMemoryOffset); |
| 3297 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3232 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3298 } | 3233 } |
| 3299 | 3234 |
| 3300 TEST_P(GLES2DecoderTest, TexSubImage2DValidArgs) { | 3235 TEST_F(GLES2DecoderTest, TexSubImage2DValidArgs) { |
| 3301 const int kWidth = 16; | 3236 const int kWidth = 16; |
| 3302 const int kHeight = 8; | 3237 const int kHeight = 8; |
| 3303 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 3238 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 3304 DoTexImage2D( | 3239 DoTexImage2D( |
| 3305 GL_TEXTURE_2D, 1, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 3240 GL_TEXTURE_2D, 1, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 3306 kSharedMemoryId, kSharedMemoryOffset); | 3241 kSharedMemoryId, kSharedMemoryOffset); |
| 3307 EXPECT_CALL(*gl_, TexSubImage2D( | 3242 EXPECT_CALL(*gl_, TexSubImage2D( |
| 3308 GL_TEXTURE_2D, 1, 1, 0, kWidth - 1, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, | 3243 GL_TEXTURE_2D, 1, 1, 0, kWidth - 1, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, |
| 3309 shared_memory_address_)) | 3244 shared_memory_address_)) |
| 3310 .Times(1) | 3245 .Times(1) |
| 3311 .RetiresOnSaturation(); | 3246 .RetiresOnSaturation(); |
| 3312 TexSubImage2D cmd; | 3247 TexSubImage2D cmd; |
| 3313 cmd.Init( | 3248 cmd.Init( |
| 3314 GL_TEXTURE_2D, 1, 1, 0, kWidth - 1, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, | 3249 GL_TEXTURE_2D, 1, 1, 0, kWidth - 1, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, |
| 3315 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); | 3250 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); |
| 3316 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3251 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3317 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3252 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3318 } | 3253 } |
| 3319 | 3254 |
| 3320 TEST_P(GLES2DecoderTest, TexSubImage2DBadArgs) { | 3255 TEST_F(GLES2DecoderTest, TexSubImage2DBadArgs) { |
| 3321 const int kWidth = 16; | 3256 const int kWidth = 16; |
| 3322 const int kHeight = 8; | 3257 const int kHeight = 8; |
| 3323 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 3258 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 3324 DoTexImage2D( | 3259 DoTexImage2D( |
| 3325 GL_TEXTURE_2D, 1, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 3260 GL_TEXTURE_2D, 1, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 3326 0, 0); | 3261 0, 0); |
| 3327 TexSubImage2D cmd; | 3262 TexSubImage2D cmd; |
| 3328 cmd.Init(GL_TEXTURE0, 1, 0, 0, kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, | 3263 cmd.Init(GL_TEXTURE0, 1, 0, 0, kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, |
| 3329 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); | 3264 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); |
| 3330 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3265 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3371 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3306 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3372 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 3307 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 3373 cmd.Init(GL_TEXTURE_2D, 1, 0, 0, kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, | 3308 cmd.Init(GL_TEXTURE_2D, 1, 0, 0, kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, |
| 3374 kInvalidSharedMemoryId, kSharedMemoryOffset, GL_FALSE); | 3309 kInvalidSharedMemoryId, kSharedMemoryOffset, GL_FALSE); |
| 3375 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3310 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3376 cmd.Init(GL_TEXTURE_2D, 1, 0, 0, kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, | 3311 cmd.Init(GL_TEXTURE_2D, 1, 0, 0, kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, |
| 3377 kSharedMemoryId, kInvalidSharedMemoryOffset, GL_FALSE); | 3312 kSharedMemoryId, kInvalidSharedMemoryOffset, GL_FALSE); |
| 3378 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 3313 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 3379 } | 3314 } |
| 3380 | 3315 |
| 3381 TEST_P(GLES2DecoderTest, CopyTexSubImage2DValidArgs) { | 3316 TEST_F(GLES2DecoderTest, CopyTexSubImage2DValidArgs) { |
| 3382 const int kWidth = 16; | 3317 const int kWidth = 16; |
| 3383 const int kHeight = 8; | 3318 const int kHeight = 8; |
| 3384 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 3319 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 3385 DoTexImage2D( | 3320 DoTexImage2D( |
| 3386 GL_TEXTURE_2D, 1, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 3321 GL_TEXTURE_2D, 1, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 3387 kSharedMemoryId, kSharedMemoryOffset); | 3322 kSharedMemoryId, kSharedMemoryOffset); |
| 3388 EXPECT_CALL(*gl_, CopyTexSubImage2D( | 3323 EXPECT_CALL(*gl_, CopyTexSubImage2D( |
| 3389 GL_TEXTURE_2D, 1, 0, 0, 0, 0, kWidth, kHeight)) | 3324 GL_TEXTURE_2D, 1, 0, 0, 0, 0, kWidth, kHeight)) |
| 3390 .Times(1) | 3325 .Times(1) |
| 3391 .RetiresOnSaturation(); | 3326 .RetiresOnSaturation(); |
| 3392 CopyTexSubImage2D cmd; | 3327 CopyTexSubImage2D cmd; |
| 3393 cmd.Init(GL_TEXTURE_2D, 1, 0, 0, 0, 0, kWidth, kHeight); | 3328 cmd.Init(GL_TEXTURE_2D, 1, 0, 0, 0, 0, kWidth, kHeight); |
| 3394 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3329 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3395 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3330 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3396 } | 3331 } |
| 3397 | 3332 |
| 3398 TEST_P(GLES2DecoderTest, CopyTexSubImage2DBadArgs) { | 3333 TEST_F(GLES2DecoderTest, CopyTexSubImage2DBadArgs) { |
| 3399 const int kWidth = 16; | 3334 const int kWidth = 16; |
| 3400 const int kHeight = 8; | 3335 const int kHeight = 8; |
| 3401 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 3336 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 3402 DoTexImage2D( | 3337 DoTexImage2D( |
| 3403 GL_TEXTURE_2D, 1, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 3338 GL_TEXTURE_2D, 1, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 3404 0, 0); | 3339 0, 0); |
| 3405 CopyTexSubImage2D cmd; | 3340 CopyTexSubImage2D cmd; |
| 3406 cmd.Init(GL_TEXTURE0, 1, 0, 0, 0, 0, kWidth, kHeight); | 3341 cmd.Init(GL_TEXTURE0, 1, 0, 0, 0, 0, kWidth, kHeight); |
| 3407 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3342 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3408 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 3343 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 3421 cmd.Init(GL_TEXTURE_2D, 1, 0, 0, 0, 0, kWidth + 1, kHeight); | 3356 cmd.Init(GL_TEXTURE_2D, 1, 0, 0, 0, 0, kWidth + 1, kHeight); |
| 3422 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3357 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3423 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 3358 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 3424 cmd.Init(GL_TEXTURE_2D, 1, 0, 0, 0, 0, kWidth, kHeight + 1); | 3359 cmd.Init(GL_TEXTURE_2D, 1, 0, 0, 0, 0, kWidth, kHeight + 1); |
| 3425 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3360 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3426 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 3361 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 3427 } | 3362 } |
| 3428 | 3363 |
| 3429 // Check that if a renderbuffer is attached and GL returns | 3364 // Check that if a renderbuffer is attached and GL returns |
| 3430 // GL_FRAMEBUFFER_COMPLETE that the buffer is cleared and state is restored. | 3365 // GL_FRAMEBUFFER_COMPLETE that the buffer is cleared and state is restored. |
| 3431 TEST_P(GLES2DecoderManualInitTest, FramebufferRenderbufferClearColor) { | 3366 TEST_F(GLES2DecoderTest, FramebufferRenderbufferClearColor) { |
| 3432 InitState init; | |
| 3433 init.gl_version = "opengl es 2.0"; | |
| 3434 init.has_alpha = true; | |
| 3435 init.has_depth = true; | |
| 3436 init.request_alpha = true; | |
| 3437 init.request_depth = true; | |
| 3438 InitDecoder(init); | |
| 3439 | |
| 3440 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 3367 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 3441 kServiceFramebufferId); | 3368 kServiceFramebufferId); |
| 3442 ClearColor color_cmd; | 3369 ClearColor color_cmd; |
| 3443 ColorMask color_mask_cmd; | 3370 ColorMask color_mask_cmd; |
| 3444 Enable enable_cmd; | 3371 Enable enable_cmd; |
| 3445 FramebufferRenderbuffer cmd; | 3372 FramebufferRenderbuffer cmd; |
| 3446 color_cmd.Init(0.1f, 0.2f, 0.3f, 0.4f); | 3373 color_cmd.Init(0.1f, 0.2f, 0.3f, 0.4f); |
| 3447 color_mask_cmd.Init(0, 1, 0, 1); | 3374 color_mask_cmd.Init(0, 1, 0, 1); |
| 3448 enable_cmd.Init(GL_SCISSOR_TEST); | 3375 enable_cmd.Init(GL_SCISSOR_TEST); |
| 3449 cmd.Init( | 3376 cmd.Init( |
| 3450 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, | 3377 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, |
| 3451 client_renderbuffer_id_); | 3378 client_renderbuffer_id_); |
| 3452 InSequence sequence; | 3379 InSequence sequence; |
| 3453 EXPECT_CALL(*gl_, ClearColor(0.1f, 0.2f, 0.3f, 0.4f)) | 3380 EXPECT_CALL(*gl_, ClearColor(0.1f, 0.2f, 0.3f, 0.4f)) |
| 3454 .Times(1) | 3381 .Times(1) |
| 3455 .RetiresOnSaturation(); | 3382 .RetiresOnSaturation(); |
| 3456 SetupExpectationsForEnableDisable(GL_SCISSOR_TEST, true); | |
| 3457 EXPECT_CALL(*gl_, GetError()) | 3383 EXPECT_CALL(*gl_, GetError()) |
| 3458 .WillOnce(Return(GL_NO_ERROR)) | 3384 .WillOnce(Return(GL_NO_ERROR)) |
| 3459 .RetiresOnSaturation(); | 3385 .RetiresOnSaturation(); |
| 3460 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT( | 3386 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT( |
| 3461 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, | 3387 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, |
| 3462 kServiceRenderbufferId)) | 3388 kServiceRenderbufferId)) |
| 3463 .Times(1) | 3389 .Times(1) |
| 3464 .RetiresOnSaturation(); | 3390 .RetiresOnSaturation(); |
| 3465 EXPECT_CALL(*gl_, GetError()) | 3391 EXPECT_CALL(*gl_, GetError()) |
| 3466 .WillOnce(Return(GL_NO_ERROR)) | 3392 .WillOnce(Return(GL_NO_ERROR)) |
| 3467 .RetiresOnSaturation(); | 3393 .RetiresOnSaturation(); |
| 3468 EXPECT_EQ(error::kNoError, ExecuteCmd(color_cmd)); | 3394 EXPECT_EQ(error::kNoError, ExecuteCmd(color_cmd)); |
| 3469 EXPECT_EQ(error::kNoError, ExecuteCmd(color_mask_cmd)); | 3395 EXPECT_EQ(error::kNoError, ExecuteCmd(color_mask_cmd)); |
| 3470 EXPECT_EQ(error::kNoError, ExecuteCmd(enable_cmd)); | 3396 EXPECT_EQ(error::kNoError, ExecuteCmd(enable_cmd)); |
| 3471 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3397 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3472 } | 3398 } |
| 3473 | 3399 |
| 3474 TEST_P(GLES2DecoderTest, FramebufferRenderbufferClearDepth) { | 3400 TEST_F(GLES2DecoderTest, FramebufferRenderbufferClearDepth) { |
| 3475 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 3401 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 3476 kServiceFramebufferId); | 3402 kServiceFramebufferId); |
| 3477 ClearDepthf depth_cmd; | 3403 ClearDepthf depth_cmd; |
| 3478 DepthMask depth_mask_cmd; | 3404 DepthMask depth_mask_cmd; |
| 3479 FramebufferRenderbuffer cmd; | 3405 FramebufferRenderbuffer cmd; |
| 3480 depth_cmd.Init(0.5f); | 3406 depth_cmd.Init(0.5f); |
| 3481 depth_mask_cmd.Init(false); | 3407 depth_mask_cmd.Init(false); |
| 3482 cmd.Init( | 3408 cmd.Init( |
| 3483 GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, | 3409 GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, |
| 3484 client_renderbuffer_id_); | 3410 client_renderbuffer_id_); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 3495 .Times(1) | 3421 .Times(1) |
| 3496 .RetiresOnSaturation(); | 3422 .RetiresOnSaturation(); |
| 3497 EXPECT_CALL(*gl_, GetError()) | 3423 EXPECT_CALL(*gl_, GetError()) |
| 3498 .WillOnce(Return(GL_NO_ERROR)) | 3424 .WillOnce(Return(GL_NO_ERROR)) |
| 3499 .RetiresOnSaturation(); | 3425 .RetiresOnSaturation(); |
| 3500 EXPECT_EQ(error::kNoError, ExecuteCmd(depth_cmd)); | 3426 EXPECT_EQ(error::kNoError, ExecuteCmd(depth_cmd)); |
| 3501 EXPECT_EQ(error::kNoError, ExecuteCmd(depth_mask_cmd)); | 3427 EXPECT_EQ(error::kNoError, ExecuteCmd(depth_mask_cmd)); |
| 3502 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3428 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3503 } | 3429 } |
| 3504 | 3430 |
| 3505 TEST_P(GLES2DecoderTest, FramebufferRenderbufferClearStencil) { | 3431 TEST_F(GLES2DecoderTest, FramebufferRenderbufferClearStencil) { |
| 3506 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 3432 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 3507 kServiceFramebufferId); | 3433 kServiceFramebufferId); |
| 3508 ClearStencil stencil_cmd; | 3434 ClearStencil stencil_cmd; |
| 3509 StencilMaskSeparate stencil_mask_separate_cmd; | 3435 StencilMaskSeparate stencil_mask_separate_cmd; |
| 3510 FramebufferRenderbuffer cmd; | 3436 FramebufferRenderbuffer cmd; |
| 3511 stencil_cmd.Init(123); | 3437 stencil_cmd.Init(123); |
| 3512 stencil_mask_separate_cmd.Init(GL_BACK, 0x1234u); | 3438 stencil_mask_separate_cmd.Init(GL_BACK, 0x1234u); |
| 3513 cmd.Init( | 3439 cmd.Init( |
| 3514 GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, | 3440 GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, |
| 3515 client_renderbuffer_id_); | 3441 client_renderbuffer_id_); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 3526 .Times(1) | 3452 .Times(1) |
| 3527 .RetiresOnSaturation(); | 3453 .RetiresOnSaturation(); |
| 3528 EXPECT_CALL(*gl_, GetError()) | 3454 EXPECT_CALL(*gl_, GetError()) |
| 3529 .WillOnce(Return(GL_NO_ERROR)) | 3455 .WillOnce(Return(GL_NO_ERROR)) |
| 3530 .RetiresOnSaturation(); | 3456 .RetiresOnSaturation(); |
| 3531 EXPECT_EQ(error::kNoError, ExecuteCmd(stencil_cmd)); | 3457 EXPECT_EQ(error::kNoError, ExecuteCmd(stencil_cmd)); |
| 3532 EXPECT_EQ(error::kNoError, ExecuteCmd(stencil_mask_separate_cmd)); | 3458 EXPECT_EQ(error::kNoError, ExecuteCmd(stencil_mask_separate_cmd)); |
| 3533 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3459 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3534 } | 3460 } |
| 3535 | 3461 |
| 3536 TEST_P(GLES2DecoderTest, IsBuffer) { | 3462 TEST_F(GLES2DecoderTest, IsBuffer) { |
| 3537 EXPECT_FALSE(DoIsBuffer(client_buffer_id_)); | 3463 EXPECT_FALSE(DoIsBuffer(client_buffer_id_)); |
| 3538 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); | 3464 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); |
| 3539 EXPECT_TRUE(DoIsBuffer(client_buffer_id_)); | 3465 EXPECT_TRUE(DoIsBuffer(client_buffer_id_)); |
| 3540 DoDeleteBuffer(client_buffer_id_, kServiceBufferId); | 3466 DoDeleteBuffer(client_buffer_id_, kServiceBufferId); |
| 3541 EXPECT_FALSE(DoIsBuffer(client_buffer_id_)); | 3467 EXPECT_FALSE(DoIsBuffer(client_buffer_id_)); |
| 3542 } | 3468 } |
| 3543 | 3469 |
| 3544 TEST_P(GLES2DecoderTest, IsFramebuffer) { | 3470 TEST_F(GLES2DecoderTest, IsFramebuffer) { |
| 3545 EXPECT_FALSE(DoIsFramebuffer(client_framebuffer_id_)); | 3471 EXPECT_FALSE(DoIsFramebuffer(client_framebuffer_id_)); |
| 3546 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 3472 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 3547 kServiceFramebufferId); | 3473 kServiceFramebufferId); |
| 3548 EXPECT_TRUE(DoIsFramebuffer(client_framebuffer_id_)); | 3474 EXPECT_TRUE(DoIsFramebuffer(client_framebuffer_id_)); |
| 3549 DoDeleteFramebuffer( | 3475 DoDeleteFramebuffer( |
| 3550 client_framebuffer_id_, kServiceFramebufferId, | 3476 client_framebuffer_id_, kServiceFramebufferId, |
| 3551 true, GL_FRAMEBUFFER, 0, | 3477 true, GL_FRAMEBUFFER, 0, |
| 3552 true, GL_FRAMEBUFFER, 0); | 3478 true, GL_FRAMEBUFFER, 0); |
| 3553 EXPECT_FALSE(DoIsFramebuffer(client_framebuffer_id_)); | 3479 EXPECT_FALSE(DoIsFramebuffer(client_framebuffer_id_)); |
| 3554 } | 3480 } |
| 3555 | 3481 |
| 3556 TEST_P(GLES2DecoderTest, IsProgram) { | 3482 TEST_F(GLES2DecoderTest, IsProgram) { |
| 3557 // IsProgram is true as soon as the program is created. | 3483 // IsProgram is true as soon as the program is created. |
| 3558 EXPECT_TRUE(DoIsProgram(client_program_id_)); | 3484 EXPECT_TRUE(DoIsProgram(client_program_id_)); |
| 3559 EXPECT_CALL(*gl_, DeleteProgram(kServiceProgramId)) | 3485 EXPECT_CALL(*gl_, DeleteProgram(kServiceProgramId)) |
| 3560 .Times(1) | 3486 .Times(1) |
| 3561 .RetiresOnSaturation(); | 3487 .RetiresOnSaturation(); |
| 3562 DoDeleteProgram(client_program_id_, kServiceProgramId); | 3488 DoDeleteProgram(client_program_id_, kServiceProgramId); |
| 3563 EXPECT_FALSE(DoIsProgram(client_program_id_)); | 3489 EXPECT_FALSE(DoIsProgram(client_program_id_)); |
| 3564 | 3490 |
| 3565 } | 3491 } |
| 3566 | 3492 |
| 3567 TEST_P(GLES2DecoderTest, IsRenderbuffer) { | 3493 TEST_F(GLES2DecoderTest, IsRenderbuffer) { |
| 3568 EXPECT_FALSE(DoIsRenderbuffer(client_renderbuffer_id_)); | 3494 EXPECT_FALSE(DoIsRenderbuffer(client_renderbuffer_id_)); |
| 3569 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, | 3495 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
| 3570 kServiceRenderbufferId); | 3496 kServiceRenderbufferId); |
| 3571 EXPECT_TRUE(DoIsRenderbuffer(client_renderbuffer_id_)); | 3497 EXPECT_TRUE(DoIsRenderbuffer(client_renderbuffer_id_)); |
| 3572 DoDeleteRenderbuffer(client_renderbuffer_id_, kServiceRenderbufferId); | 3498 DoDeleteRenderbuffer(client_renderbuffer_id_, kServiceRenderbufferId); |
| 3573 EXPECT_FALSE(DoIsRenderbuffer(client_renderbuffer_id_)); | 3499 EXPECT_FALSE(DoIsRenderbuffer(client_renderbuffer_id_)); |
| 3574 } | 3500 } |
| 3575 | 3501 |
| 3576 TEST_P(GLES2DecoderTest, IsShader) { | 3502 TEST_F(GLES2DecoderTest, IsShader) { |
| 3577 // IsShader is true as soon as the program is created. | 3503 // IsShader is true as soon as the program is created. |
| 3578 EXPECT_TRUE(DoIsShader(client_shader_id_)); | 3504 EXPECT_TRUE(DoIsShader(client_shader_id_)); |
| 3579 DoDeleteShader(client_shader_id_, kServiceShaderId); | 3505 DoDeleteShader(client_shader_id_, kServiceShaderId); |
| 3580 EXPECT_FALSE(DoIsShader(client_shader_id_)); | 3506 EXPECT_FALSE(DoIsShader(client_shader_id_)); |
| 3581 } | 3507 } |
| 3582 | 3508 |
| 3583 TEST_P(GLES2DecoderTest, IsTexture) { | 3509 TEST_F(GLES2DecoderTest, IsTexture) { |
| 3584 EXPECT_FALSE(DoIsTexture(client_texture_id_)); | 3510 EXPECT_FALSE(DoIsTexture(client_texture_id_)); |
| 3585 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 3511 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 3586 EXPECT_TRUE(DoIsTexture(client_texture_id_)); | 3512 EXPECT_TRUE(DoIsTexture(client_texture_id_)); |
| 3587 DoDeleteTexture(client_texture_id_, kServiceTextureId); | 3513 DoDeleteTexture(client_texture_id_, kServiceTextureId); |
| 3588 EXPECT_FALSE(DoIsTexture(client_texture_id_)); | 3514 EXPECT_FALSE(DoIsTexture(client_texture_id_)); |
| 3589 } | 3515 } |
| 3590 | 3516 |
| 3591 #if 0 // Turn this test on once we allow GL_DEPTH_STENCIL_ATTACHMENT | 3517 #if 0 // Turn this test on once we allow GL_DEPTH_STENCIL_ATTACHMENT |
| 3592 TEST_P(GLES2DecoderTest, FramebufferRenderbufferClearDepthStencil) { | 3518 TEST_F(GLES2DecoderTest, FramebufferRenderbufferClearDepthStencil) { |
| 3593 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 3519 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 3594 kServiceFramebufferId); | 3520 kServiceFramebufferId); |
| 3595 ClearDepthf depth_cmd; | 3521 ClearDepthf depth_cmd; |
| 3596 ClearStencil stencil_cmd; | 3522 ClearStencil stencil_cmd; |
| 3597 FramebufferRenderbuffer cmd; | 3523 FramebufferRenderbuffer cmd; |
| 3598 depth_cmd.Init(0.5f); | 3524 depth_cmd.Init(0.5f); |
| 3599 stencil_cmd.Init(123); | 3525 stencil_cmd.Init(123); |
| 3600 cmd.Init( | 3526 cmd.Init( |
| 3601 GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, | 3527 GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, |
| 3602 client_renderbuffer_id_); | 3528 client_renderbuffer_id_); |
| 3603 InSequence sequence; | 3529 InSequence sequence; |
| 3604 EXPECT_CALL(*gl_, ClearDepth(0.5f)) | 3530 EXPECT_CALL(*gl_, ClearDepth(0.5f)) |
| 3605 .Times(1) | 3531 .Times(1) |
| 3606 .RetiresOnSaturation(); | 3532 .RetiresOnSaturation(); |
| 3607 EXPECT_CALL(*gl_, ClearStencil(123)) | 3533 EXPECT_CALL(*gl_, ClearStencil(123)) |
| 3608 .Times(1) | 3534 .Times(1) |
| 3609 .RetiresOnSaturation(); | 3535 .RetiresOnSaturation(); |
| 3610 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT( | 3536 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT( |
| 3611 GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, | 3537 GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, |
| 3612 kServiceRenderbufferId)) | 3538 kServiceRenderbufferId)) |
| 3613 .Times(1) | 3539 .Times(1) |
| 3614 .RetiresOnSaturation(); | 3540 .RetiresOnSaturation(); |
| 3615 EXPECT_EQ(error::kNoError, ExecuteCmd(depth_cmd)); | 3541 EXPECT_EQ(error::kNoError, ExecuteCmd(depth_cmd)); |
| 3616 EXPECT_EQ(error::kNoError, ExecuteCmd(stencil_cmd)); | 3542 EXPECT_EQ(error::kNoError, ExecuteCmd(stencil_cmd)); |
| 3617 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3543 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3618 } | 3544 } |
| 3619 #endif | 3545 #endif |
| 3620 | 3546 |
| 3621 TEST_P(GLES2DecoderWithShaderTest, VertexAttribPointer) { | 3547 TEST_F(GLES2DecoderWithShaderTest, VertexAttribPointer) { |
| 3622 SetupVertexBuffer(); | 3548 SetupVertexBuffer(); |
| 3623 static const GLenum types[] = { | 3549 static const GLenum types[] = { |
| 3624 GL_BYTE, | 3550 GL_BYTE, |
| 3625 GL_UNSIGNED_BYTE, | 3551 GL_UNSIGNED_BYTE, |
| 3626 GL_SHORT, | 3552 GL_SHORT, |
| 3627 GL_UNSIGNED_SHORT, | 3553 GL_UNSIGNED_SHORT, |
| 3628 GL_FLOAT, | 3554 GL_FLOAT, |
| 3629 GL_FIXED, | 3555 GL_FIXED, |
| 3630 GL_INT, | 3556 GL_INT, |
| 3631 GL_UNSIGNED_INT, | 3557 GL_UNSIGNED_INT, |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3751 } | 3677 } |
| 3752 } | 3678 } |
| 3753 } | 3679 } |
| 3754 } | 3680 } |
| 3755 } | 3681 } |
| 3756 } | 3682 } |
| 3757 } | 3683 } |
| 3758 | 3684 |
| 3759 // Test that with an RGB backbuffer if we set the color mask to 1,1,1,1 it is | 3685 // Test that with an RGB backbuffer if we set the color mask to 1,1,1,1 it is |
| 3760 // set to 1,1,1,0 at Draw time but is 1,1,1,1 at query time. | 3686 // set to 1,1,1,0 at Draw time but is 1,1,1,1 at query time. |
| 3761 TEST_P(GLES2DecoderRGBBackbufferTest, RGBBackbufferColorMask) { | 3687 TEST_F(GLES2DecoderRGBBackbufferTest, RGBBackbufferColorMask) { |
| 3762 ColorMask cmd; | 3688 ColorMask cmd; |
| 3763 cmd.Init(true, true, true, true); | 3689 cmd.Init(true, true, true, true); |
| 3764 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3690 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3765 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3691 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3766 | 3692 |
| 3767 SetupTexture(); | 3693 SetupTexture(); |
| 3768 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); | 3694 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); |
| 3769 SetupExpectationsForApplyingDirtyState(true, // Framebuffer is RGB | 3695 SetupExpectationsForApplyingDirtyState( |
| 3770 false, // Framebuffer has depth | 3696 true, // Framebuffer is RGB |
| 3771 false, // Framebuffer has stencil | 3697 false, // Framebuffer has depth |
| 3772 0x1110, // color bits | 3698 false, // Framebuffer has stencil |
| 3773 false, // depth mask | 3699 0x1110, // color bits |
| 3774 false, // depth enabled | 3700 false, // depth mask |
| 3775 0, // front stencil mask | 3701 false, // depth enabled |
| 3776 0, // back stencil mask | 3702 0, // front stencil mask |
| 3777 false); // stencil enabled | 3703 0, // back stencil mask |
| 3704 false, // stencil enabled |
| 3705 false, // cull_face_enabled |
| 3706 false, // scissor_test_enabled |
| 3707 false); // blend_enabled |
| 3778 | 3708 |
| 3779 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 3709 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 3780 .Times(1) | 3710 .Times(1) |
| 3781 .RetiresOnSaturation(); | 3711 .RetiresOnSaturation(); |
| 3782 DrawArrays draw_cmd; | 3712 DrawArrays draw_cmd; |
| 3783 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 3713 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 3784 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); | 3714 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); |
| 3785 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3715 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3786 | 3716 |
| 3787 EXPECT_CALL(*gl_, GetError()) | 3717 EXPECT_CALL(*gl_, GetError()) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 3801 result->GetNumResults()); | 3731 result->GetNumResults()); |
| 3802 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3732 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3803 EXPECT_EQ(1, result->GetData()[0]); | 3733 EXPECT_EQ(1, result->GetData()[0]); |
| 3804 EXPECT_EQ(1, result->GetData()[1]); | 3734 EXPECT_EQ(1, result->GetData()[1]); |
| 3805 EXPECT_EQ(1, result->GetData()[2]); | 3735 EXPECT_EQ(1, result->GetData()[2]); |
| 3806 EXPECT_EQ(1, result->GetData()[3]); | 3736 EXPECT_EQ(1, result->GetData()[3]); |
| 3807 } | 3737 } |
| 3808 | 3738 |
| 3809 // Test that with no depth if we set DepthMask true that it's set to false at | 3739 // Test that with no depth if we set DepthMask true that it's set to false at |
| 3810 // draw time but querying it returns true. | 3740 // draw time but querying it returns true. |
| 3811 TEST_P(GLES2DecoderRGBBackbufferTest, RGBBackbufferDepthMask) { | 3741 TEST_F(GLES2DecoderRGBBackbufferTest, RGBBackbufferDepthMask) { |
| 3812 EXPECT_CALL(*gl_, DepthMask(true)) | 3742 EXPECT_CALL(*gl_, DepthMask(true)) |
| 3813 .Times(0) | 3743 .Times(0) |
| 3814 .RetiresOnSaturation(); | 3744 .RetiresOnSaturation(); |
| 3815 DepthMask cmd; | 3745 DepthMask cmd; |
| 3816 cmd.Init(true); | 3746 cmd.Init(true); |
| 3817 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3747 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3818 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3748 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3819 | 3749 |
| 3820 SetupTexture(); | 3750 SetupTexture(); |
| 3821 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); | 3751 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); |
| 3822 SetupExpectationsForApplyingDirtyState(true, // Framebuffer is RGB | 3752 SetupExpectationsForApplyingDirtyState( |
| 3823 false, // Framebuffer has depth | 3753 true, // Framebuffer is RGB |
| 3824 false, // Framebuffer has stencil | 3754 false, // Framebuffer has depth |
| 3825 0x1110, // color bits | 3755 false, // Framebuffer has stencil |
| 3826 false, // depth mask | 3756 0x1110, // color bits |
| 3827 false, // depth enabled | 3757 false, // depth mask |
| 3828 0, // front stencil mask | 3758 false, // depth enabled |
| 3829 0, // back stencil mask | 3759 0, // front stencil mask |
| 3830 false); // stencil enabled | 3760 0, // back stencil mask |
| 3761 false, // stencil enabled |
| 3762 false, // cull_face_enabled |
| 3763 false, // scissor_test_enabled |
| 3764 false); // blend_enabled |
| 3831 | 3765 |
| 3832 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 3766 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 3833 .Times(1) | 3767 .Times(1) |
| 3834 .RetiresOnSaturation(); | 3768 .RetiresOnSaturation(); |
| 3835 DrawArrays draw_cmd; | 3769 DrawArrays draw_cmd; |
| 3836 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 3770 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 3837 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); | 3771 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); |
| 3838 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3772 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3839 | 3773 |
| 3840 EXPECT_CALL(*gl_, GetError()) | 3774 EXPECT_CALL(*gl_, GetError()) |
| (...skipping 10 matching lines...) Expand all Loading... |
| 3851 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 3785 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 3852 EXPECT_EQ( | 3786 EXPECT_EQ( |
| 3853 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_WRITEMASK), | 3787 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_WRITEMASK), |
| 3854 result->GetNumResults()); | 3788 result->GetNumResults()); |
| 3855 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3789 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3856 EXPECT_EQ(1, result->GetData()[0]); | 3790 EXPECT_EQ(1, result->GetData()[0]); |
| 3857 } | 3791 } |
| 3858 | 3792 |
| 3859 // Test that with no stencil if we set the stencil mask it's still set to 0 at | 3793 // Test that with no stencil if we set the stencil mask it's still set to 0 at |
| 3860 // draw time but gets our value if we query. | 3794 // draw time but gets our value if we query. |
| 3861 TEST_P(GLES2DecoderRGBBackbufferTest, RGBBackbufferStencilMask) { | 3795 TEST_F(GLES2DecoderRGBBackbufferTest, RGBBackbufferStencilMask) { |
| 3862 const GLint kMask = 123; | 3796 const GLint kMask = 123; |
| 3863 EXPECT_CALL(*gl_, StencilMask(kMask)) | 3797 EXPECT_CALL(*gl_, StencilMask(kMask)) |
| 3864 .Times(0) | 3798 .Times(0) |
| 3865 .RetiresOnSaturation(); | 3799 .RetiresOnSaturation(); |
| 3866 StencilMask cmd; | 3800 StencilMask cmd; |
| 3867 cmd.Init(kMask); | 3801 cmd.Init(kMask); |
| 3868 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3802 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3869 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3803 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3870 | 3804 |
| 3871 SetupTexture(); | 3805 SetupTexture(); |
| 3872 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); | 3806 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); |
| 3873 SetupExpectationsForApplyingDirtyState(true, // Framebuffer is RGB | 3807 SetupExpectationsForApplyingDirtyState( |
| 3874 false, // Framebuffer has depth | 3808 true, // Framebuffer is RGB |
| 3875 false, // Framebuffer has stencil | 3809 false, // Framebuffer has depth |
| 3876 0x1110, // color bits | 3810 false, // Framebuffer has stencil |
| 3877 false, // depth mask | 3811 0x1110, // color bits |
| 3878 false, // depth enabled | 3812 false, // depth mask |
| 3879 0, // front stencil mask | 3813 false, // depth enabled |
| 3880 0, // back stencil mask | 3814 0, // front stencil mask |
| 3881 false); // stencil enabled | 3815 0, // back stencil mask |
| 3816 false, // stencil enabled |
| 3817 false, // cull_face_enabled |
| 3818 false, // scissor_test_enabled |
| 3819 false); // blend_enabled |
| 3882 | 3820 |
| 3883 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 3821 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 3884 .Times(1) | 3822 .Times(1) |
| 3885 .RetiresOnSaturation(); | 3823 .RetiresOnSaturation(); |
| 3886 DrawArrays draw_cmd; | 3824 DrawArrays draw_cmd; |
| 3887 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 3825 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 3888 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); | 3826 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); |
| 3889 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3827 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3890 | 3828 |
| 3891 EXPECT_CALL(*gl_, GetError()) | 3829 EXPECT_CALL(*gl_, GetError()) |
| 3892 .WillOnce(Return(GL_NO_ERROR)) | 3830 .WillOnce(Return(GL_NO_ERROR)) |
| 3893 .WillOnce(Return(GL_NO_ERROR)) | 3831 .WillOnce(Return(GL_NO_ERROR)) |
| 3894 .RetiresOnSaturation(); | 3832 .RetiresOnSaturation(); |
| 3895 typedef GetIntegerv::Result Result; | 3833 typedef GetIntegerv::Result Result; |
| 3896 Result* result = static_cast<Result*>(shared_memory_address_); | 3834 Result* result = static_cast<Result*>(shared_memory_address_); |
| 3897 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_WRITEMASK, result->GetData())) | 3835 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_WRITEMASK, result->GetData())) |
| 3898 .Times(0); | 3836 .Times(0); |
| 3899 result->size = 0; | 3837 result->size = 0; |
| 3900 GetIntegerv cmd2; | 3838 GetIntegerv cmd2; |
| 3901 cmd2.Init(GL_STENCIL_WRITEMASK, shared_memory_id_, shared_memory_offset_); | 3839 cmd2.Init(GL_STENCIL_WRITEMASK, shared_memory_id_, shared_memory_offset_); |
| 3902 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 3840 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 3903 EXPECT_EQ( | 3841 EXPECT_EQ( |
| 3904 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_WRITEMASK), | 3842 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_WRITEMASK), |
| 3905 result->GetNumResults()); | 3843 result->GetNumResults()); |
| 3906 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3844 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3907 EXPECT_EQ(kMask, result->GetData()[0]); | 3845 EXPECT_EQ(kMask, result->GetData()[0]); |
| 3908 } | 3846 } |
| 3909 | 3847 |
| 3910 // Test that if an FBO is bound we get the correct masks. | 3848 // Test that if an FBO is bound we get the correct masks. |
| 3911 TEST_P(GLES2DecoderRGBBackbufferTest, RGBBackbufferColorMaskFBO) { | 3849 TEST_F(GLES2DecoderRGBBackbufferTest, RGBBackbufferColorMaskFBO) { |
| 3912 ColorMask cmd; | 3850 ColorMask cmd; |
| 3913 cmd.Init(true, true, true, true); | 3851 cmd.Init(true, true, true, true); |
| 3914 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3852 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 3915 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3853 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3916 | 3854 |
| 3917 SetupTexture(); | 3855 SetupTexture(); |
| 3918 SetupVertexBuffer(); | 3856 SetupVertexBuffer(); |
| 3919 DoEnableVertexAttribArray(0); | 3857 DoEnableVertexAttribArray(0); |
| 3920 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); | 3858 DoVertexAttribPointer(0, 2, GL_FLOAT, 0, 0); |
| 3921 DoEnableVertexAttribArray(1); | 3859 DoEnableVertexAttribArray(1); |
| 3922 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); | 3860 DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0); |
| 3923 DoEnableVertexAttribArray(2); | 3861 DoEnableVertexAttribArray(2); |
| 3924 DoVertexAttribPointer(2, 2, GL_FLOAT, 0, 0); | 3862 DoVertexAttribPointer(2, 2, GL_FLOAT, 0, 0); |
| 3925 SetupExpectationsForApplyingDirtyState(true, // Framebuffer is RGB | 3863 SetupExpectationsForApplyingDirtyState( |
| 3926 false, // Framebuffer has depth | 3864 true, // Framebuffer is RGB |
| 3927 false, // Framebuffer has stencil | 3865 false, // Framebuffer has depth |
| 3928 0x1110, // color bits | 3866 false, // Framebuffer has stencil |
| 3929 false, // depth mask | 3867 0x1110, // color bits |
| 3930 false, // depth enabled | 3868 false, // depth mask |
| 3931 0, // front stencil mask | 3869 false, // depth enabled |
| 3932 0, // back stencil mask | 3870 0, // front stencil mask |
| 3933 false); // stencil enabled | 3871 0, // back stencil mask |
| 3872 false, // stencil enabled |
| 3873 false, // cull_face_enabled |
| 3874 false, // scissor_test_enabled |
| 3875 false); // blend_enabled |
| 3934 | 3876 |
| 3935 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 3877 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 3936 .Times(1) | 3878 .Times(1) |
| 3937 .RetiresOnSaturation(); | 3879 .RetiresOnSaturation(); |
| 3938 DrawArrays draw_cmd; | 3880 DrawArrays draw_cmd; |
| 3939 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 3881 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 3940 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); | 3882 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); |
| 3941 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3883 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3942 | 3884 |
| 3943 // Check that no extra calls are made on the next draw. | 3885 // Check that no extra calls are made on the next draw. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 3960 DoBindFramebuffer( | 3902 DoBindFramebuffer( |
| 3961 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 3903 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
| 3962 DoFramebufferTexture2D( | 3904 DoFramebufferTexture2D( |
| 3963 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, | 3905 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, |
| 3964 client_texture_id_, kServiceTextureId, 0, GL_NO_ERROR); | 3906 client_texture_id_, kServiceTextureId, 0, GL_NO_ERROR); |
| 3965 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) | 3907 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) |
| 3966 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) | 3908 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) |
| 3967 .RetiresOnSaturation(); | 3909 .RetiresOnSaturation(); |
| 3968 | 3910 |
| 3969 // This time state needs to be set. | 3911 // This time state needs to be set. |
| 3970 SetupExpectationsForApplyingDirtyState(false, // Framebuffer is RGB | 3912 SetupExpectationsForApplyingDirtyState( |
| 3971 false, // Framebuffer has depth | 3913 false, // Framebuffer is RGB |
| 3972 false, // Framebuffer has stencil | 3914 false, // Framebuffer has depth |
| 3973 0x1110, // color bits | 3915 false, // Framebuffer has stencil |
| 3974 false, // depth mask | 3916 0x1110, // color bits |
| 3975 false, // depth enabled | 3917 false, // depth mask |
| 3976 0, // front stencil mask | 3918 false, // depth enabled |
| 3977 0, // back stencil mask | 3919 0, // front stencil mask |
| 3978 false); // stencil enabled | 3920 0, // back stencil mask |
| 3921 false, // stencil enabled |
| 3922 false, // cull_face_enabled |
| 3923 false, // scissor_test_enabled |
| 3924 false); // blend_enabled |
| 3979 | 3925 |
| 3980 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 3926 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 3981 .Times(1) | 3927 .Times(1) |
| 3982 .RetiresOnSaturation(); | 3928 .RetiresOnSaturation(); |
| 3983 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); | 3929 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); |
| 3984 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3930 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3985 | 3931 |
| 3986 // Check that no extra calls are made on the next draw. | 3932 // Check that no extra calls are made on the next draw. |
| 3987 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 3933 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 3988 .Times(1) | 3934 .Times(1) |
| 3989 .RetiresOnSaturation(); | 3935 .RetiresOnSaturation(); |
| 3990 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); | 3936 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); |
| 3991 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3937 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 3992 | 3938 |
| 3993 // Unbind | 3939 // Unbind |
| 3994 DoBindFramebuffer(GL_FRAMEBUFFER, 0, 0); | 3940 DoBindFramebuffer(GL_FRAMEBUFFER, 0, 0); |
| 3995 | 3941 |
| 3996 SetupExpectationsForApplyingDirtyState(true, // Framebuffer is RGB | 3942 SetupExpectationsForApplyingDirtyState( |
| 3997 false, // Framebuffer has depth | 3943 true, // Framebuffer is RGB |
| 3998 false, // Framebuffer has stencil | 3944 false, // Framebuffer has depth |
| 3999 0x1110, // color bits | 3945 false, // Framebuffer has stencil |
| 4000 false, // depth mask | 3946 0x1110, // color bits |
| 4001 false, // depth enabled | 3947 false, // depth mask |
| 4002 0, // front stencil mask | 3948 false, // depth enabled |
| 4003 0, // back stencil mask | 3949 0, // front stencil mask |
| 4004 false); // stencil enabled | 3950 0, // back stencil mask |
| 3951 false, // stencil enabled |
| 3952 false, // cull_face_enabled |
| 3953 false, // scissor_test_enabled |
| 3954 false); // blend_enabled |
| 4005 | 3955 |
| 4006 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 3956 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 4007 .Times(1) | 3957 .Times(1) |
| 4008 .RetiresOnSaturation(); | 3958 .RetiresOnSaturation(); |
| 4009 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); | 3959 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); |
| 4010 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3960 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4011 } | 3961 } |
| 4012 | 3962 |
| 4013 TEST_P(GLES2DecoderManualInitTest, CachedColorMask) { | 3963 TEST_F(GLES2DecoderManualInitTest, ActualAlphaMatchesRequestedAlpha) { |
| 4014 InitState init; | 3964 InitState init; |
| 4015 init.gl_version = "3.0"; | 3965 init.gl_version = "3.0"; |
| 4016 init.has_alpha = true; | 3966 init.has_alpha = true; |
| 4017 init.has_depth = true; | |
| 4018 init.has_stencil = true; | |
| 4019 init.request_alpha = true; | |
| 4020 init.request_depth = true; | |
| 4021 init.request_stencil = true; | |
| 4022 init.bind_generates_resource = true; | |
| 4023 InitDecoder(init); | |
| 4024 | |
| 4025 SetupDefaultProgram(); | |
| 4026 SetupAllNeededVertexBuffers(); | |
| 4027 SetupTexture(); | |
| 4028 | |
| 4029 // Test all color_bits combinations twice. | |
| 4030 for (int i = 0; i < 32; i++) { | |
| 4031 GLuint color_bits = (i & 1 ? 0x0001 : 0x0000) | (i & 2 ? 0x0010 : 0x0000) | | |
| 4032 (i & 4 ? 0x0100 : 0x0000) | (i & 8 ? 0x1000 : 0x0000); | |
| 4033 | |
| 4034 // Toggle depth_test to force ApplyDirtyState each time. | |
| 4035 DirtyStateMaskTest(color_bits, false, 0xffffffff, 0xffffffff); | |
| 4036 DirtyStateMaskTest(color_bits, true, 0xffffffff, 0xffffffff); | |
| 4037 DirtyStateMaskTest(color_bits, false, 0xffffffff, 0xffffffff); | |
| 4038 } | |
| 4039 } | |
| 4040 | |
| 4041 TEST_P(GLES2DecoderManualInitTest, CachedDepthMask) { | |
| 4042 InitState init; | |
| 4043 init.gl_version = "3.0"; | |
| 4044 init.has_alpha = true; | |
| 4045 init.has_depth = true; | |
| 4046 init.has_stencil = true; | |
| 4047 init.request_alpha = true; | |
| 4048 init.request_depth = true; | |
| 4049 init.request_stencil = true; | |
| 4050 init.bind_generates_resource = true; | |
| 4051 InitDecoder(init); | |
| 4052 | |
| 4053 SetupDefaultProgram(); | |
| 4054 SetupAllNeededVertexBuffers(); | |
| 4055 SetupTexture(); | |
| 4056 | |
| 4057 // Test all depth_mask combinations twice. | |
| 4058 for (int i = 0; i < 4; i++) { | |
| 4059 bool depth_mask = (i & 1) == 1; | |
| 4060 | |
| 4061 // Toggle color masks to force ApplyDirtyState each time. | |
| 4062 DirtyStateMaskTest(0x1010, depth_mask, 0xffffffff, 0xffffffff); | |
| 4063 DirtyStateMaskTest(0x0101, depth_mask, 0xffffffff, 0xffffffff); | |
| 4064 DirtyStateMaskTest(0x1010, depth_mask, 0xffffffff, 0xffffffff); | |
| 4065 } | |
| 4066 } | |
| 4067 | |
| 4068 TEST_P(GLES2DecoderManualInitTest, CachedStencilMask) { | |
| 4069 InitState init; | |
| 4070 init.gl_version = "3.0"; | |
| 4071 init.has_alpha = true; | |
| 4072 init.has_depth = true; | |
| 4073 init.has_stencil = true; | |
| 4074 init.request_alpha = true; | |
| 4075 init.request_depth = true; | |
| 4076 init.request_stencil = true; | |
| 4077 init.bind_generates_resource = true; | |
| 4078 InitDecoder(init); | |
| 4079 | |
| 4080 SetupDefaultProgram(); | |
| 4081 SetupAllNeededVertexBuffers(); | |
| 4082 SetupTexture(); | |
| 4083 | |
| 4084 // Test all stencil_mask combinations twice. | |
| 4085 for (int i = 0; i < 4; i++) { | |
| 4086 GLuint stencil_mask = (i & 1) ? 0xf0f0f0f0 : 0x0f0f0f0f; | |
| 4087 | |
| 4088 // Toggle color masks to force ApplyDirtyState each time. | |
| 4089 DirtyStateMaskTest(0x1010, true, stencil_mask, 0xffffffff); | |
| 4090 DirtyStateMaskTest(0x0101, true, stencil_mask, 0xffffffff); | |
| 4091 DirtyStateMaskTest(0x1010, true, stencil_mask, 0xffffffff); | |
| 4092 } | |
| 4093 | |
| 4094 for (int i = 0; i < 4; i++) { | |
| 4095 GLuint stencil_mask = (i & 1) ? 0xf0f0f0f0 : 0x0f0f0f0f; | |
| 4096 | |
| 4097 // Toggle color masks to force ApplyDirtyState each time. | |
| 4098 DirtyStateMaskTest(0x1010, true, 0xffffffff, stencil_mask); | |
| 4099 DirtyStateMaskTest(0x0101, true, 0xffffffff, stencil_mask); | |
| 4100 DirtyStateMaskTest(0x1010, true, 0xffffffff, stencil_mask); | |
| 4101 } | |
| 4102 } | |
| 4103 | |
| 4104 TEST_P(GLES2DecoderManualInitTest, ActualAlphaMatchesRequestedAlpha) { | |
| 4105 InitState init; | |
| 4106 init.gl_version = "3.0"; | |
| 4107 init.has_alpha = true; | |
| 4108 init.request_alpha = true; | 3967 init.request_alpha = true; |
| 4109 init.bind_generates_resource = true; | 3968 init.bind_generates_resource = true; |
| 4110 InitDecoder(init); | 3969 InitDecoder(init); |
| 4111 | 3970 |
| 4112 EXPECT_CALL(*gl_, GetError()) | 3971 EXPECT_CALL(*gl_, GetError()) |
| 4113 .WillOnce(Return(GL_NO_ERROR)) | 3972 .WillOnce(Return(GL_NO_ERROR)) |
| 4114 .WillOnce(Return(GL_NO_ERROR)) | 3973 .WillOnce(Return(GL_NO_ERROR)) |
| 4115 .RetiresOnSaturation(); | 3974 .RetiresOnSaturation(); |
| 4116 typedef GetIntegerv::Result Result; | 3975 typedef GetIntegerv::Result Result; |
| 4117 Result* result = static_cast<Result*>(shared_memory_address_); | 3976 Result* result = static_cast<Result*>(shared_memory_address_); |
| 4118 EXPECT_CALL(*gl_, GetIntegerv(GL_ALPHA_BITS, _)) | 3977 EXPECT_CALL(*gl_, GetIntegerv(GL_ALPHA_BITS, _)) |
| 4119 .WillOnce(SetArgumentPointee<1>(8)) | 3978 .WillOnce(SetArgumentPointee<1>(8)) |
| 4120 .RetiresOnSaturation(); | 3979 .RetiresOnSaturation(); |
| 4121 result->size = 0; | 3980 result->size = 0; |
| 4122 GetIntegerv cmd2; | 3981 GetIntegerv cmd2; |
| 4123 cmd2.Init(GL_ALPHA_BITS, shared_memory_id_, shared_memory_offset_); | 3982 cmd2.Init(GL_ALPHA_BITS, shared_memory_id_, shared_memory_offset_); |
| 4124 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 3983 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 4125 EXPECT_EQ( | 3984 EXPECT_EQ( |
| 4126 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ALPHA_BITS), | 3985 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ALPHA_BITS), |
| 4127 result->GetNumResults()); | 3986 result->GetNumResults()); |
| 4128 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3987 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4129 EXPECT_EQ(8, result->GetData()[0]); | 3988 EXPECT_EQ(8, result->GetData()[0]); |
| 4130 } | 3989 } |
| 4131 | 3990 |
| 4132 TEST_P(GLES2DecoderManualInitTest, ActualAlphaDoesNotMatchRequestedAlpha) { | 3991 TEST_F(GLES2DecoderManualInitTest, ActualAlphaDoesNotMatchRequestedAlpha) { |
| 4133 InitState init; | 3992 InitState init; |
| 4134 init.gl_version = "3.0"; | 3993 init.gl_version = "3.0"; |
| 4135 init.has_alpha = true; | 3994 init.has_alpha = true; |
| 4136 init.bind_generates_resource = true; | 3995 init.bind_generates_resource = true; |
| 4137 InitDecoder(init); | 3996 InitDecoder(init); |
| 4138 | 3997 |
| 4139 EXPECT_CALL(*gl_, GetError()) | 3998 EXPECT_CALL(*gl_, GetError()) |
| 4140 .WillOnce(Return(GL_NO_ERROR)) | 3999 .WillOnce(Return(GL_NO_ERROR)) |
| 4141 .WillOnce(Return(GL_NO_ERROR)) | 4000 .WillOnce(Return(GL_NO_ERROR)) |
| 4142 .RetiresOnSaturation(); | 4001 .RetiresOnSaturation(); |
| 4143 typedef GetIntegerv::Result Result; | 4002 typedef GetIntegerv::Result Result; |
| 4144 Result* result = static_cast<Result*>(shared_memory_address_); | 4003 Result* result = static_cast<Result*>(shared_memory_address_); |
| 4145 EXPECT_CALL(*gl_, GetIntegerv(GL_ALPHA_BITS, _)) | 4004 EXPECT_CALL(*gl_, GetIntegerv(GL_ALPHA_BITS, _)) |
| 4146 .WillOnce(SetArgumentPointee<1>(8)) | 4005 .WillOnce(SetArgumentPointee<1>(8)) |
| 4147 .RetiresOnSaturation(); | 4006 .RetiresOnSaturation(); |
| 4148 result->size = 0; | 4007 result->size = 0; |
| 4149 GetIntegerv cmd2; | 4008 GetIntegerv cmd2; |
| 4150 cmd2.Init(GL_ALPHA_BITS, shared_memory_id_, shared_memory_offset_); | 4009 cmd2.Init(GL_ALPHA_BITS, shared_memory_id_, shared_memory_offset_); |
| 4151 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 4010 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 4152 EXPECT_EQ( | 4011 EXPECT_EQ( |
| 4153 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ALPHA_BITS), | 4012 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_ALPHA_BITS), |
| 4154 result->GetNumResults()); | 4013 result->GetNumResults()); |
| 4155 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4014 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4156 EXPECT_EQ(0, result->GetData()[0]); | 4015 EXPECT_EQ(0, result->GetData()[0]); |
| 4157 } | 4016 } |
| 4158 | 4017 |
| 4159 TEST_P(GLES2DecoderManualInitTest, ActualDepthMatchesRequestedDepth) { | 4018 TEST_F(GLES2DecoderManualInitTest, ActualDepthMatchesRequestedDepth) { |
| 4160 InitState init; | 4019 InitState init; |
| 4161 init.gl_version = "3.0"; | 4020 init.gl_version = "3.0"; |
| 4162 init.has_depth = true; | 4021 init.has_depth = true; |
| 4163 init.request_depth = true; | 4022 init.request_depth = true; |
| 4164 init.bind_generates_resource = true; | 4023 init.bind_generates_resource = true; |
| 4165 InitDecoder(init); | 4024 InitDecoder(init); |
| 4166 | 4025 |
| 4167 EXPECT_CALL(*gl_, GetError()) | 4026 EXPECT_CALL(*gl_, GetError()) |
| 4168 .WillOnce(Return(GL_NO_ERROR)) | 4027 .WillOnce(Return(GL_NO_ERROR)) |
| 4169 .WillOnce(Return(GL_NO_ERROR)) | 4028 .WillOnce(Return(GL_NO_ERROR)) |
| 4170 .RetiresOnSaturation(); | 4029 .RetiresOnSaturation(); |
| 4171 typedef GetIntegerv::Result Result; | 4030 typedef GetIntegerv::Result Result; |
| 4172 Result* result = static_cast<Result*>(shared_memory_address_); | 4031 Result* result = static_cast<Result*>(shared_memory_address_); |
| 4173 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) | 4032 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) |
| 4174 .WillOnce(SetArgumentPointee<1>(24)) | 4033 .WillOnce(SetArgumentPointee<1>(24)) |
| 4175 .RetiresOnSaturation(); | 4034 .RetiresOnSaturation(); |
| 4176 result->size = 0; | 4035 result->size = 0; |
| 4177 GetIntegerv cmd2; | 4036 GetIntegerv cmd2; |
| 4178 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); | 4037 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); |
| 4179 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 4038 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 4180 EXPECT_EQ( | 4039 EXPECT_EQ( |
| 4181 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), | 4040 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), |
| 4182 result->GetNumResults()); | 4041 result->GetNumResults()); |
| 4183 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4042 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4184 EXPECT_EQ(24, result->GetData()[0]); | 4043 EXPECT_EQ(24, result->GetData()[0]); |
| 4185 } | 4044 } |
| 4186 | 4045 |
| 4187 TEST_P(GLES2DecoderManualInitTest, ActualDepthDoesNotMatchRequestedDepth) { | 4046 TEST_F(GLES2DecoderManualInitTest, ActualDepthDoesNotMatchRequestedDepth) { |
| 4188 InitState init; | 4047 InitState init; |
| 4189 init.gl_version = "3.0"; | 4048 init.gl_version = "3.0"; |
| 4190 init.has_depth = true; | 4049 init.has_depth = true; |
| 4191 init.bind_generates_resource = true; | 4050 init.bind_generates_resource = true; |
| 4192 InitDecoder(init); | 4051 InitDecoder(init); |
| 4193 | 4052 |
| 4194 EXPECT_CALL(*gl_, GetError()) | 4053 EXPECT_CALL(*gl_, GetError()) |
| 4195 .WillOnce(Return(GL_NO_ERROR)) | 4054 .WillOnce(Return(GL_NO_ERROR)) |
| 4196 .WillOnce(Return(GL_NO_ERROR)) | 4055 .WillOnce(Return(GL_NO_ERROR)) |
| 4197 .RetiresOnSaturation(); | 4056 .RetiresOnSaturation(); |
| 4198 typedef GetIntegerv::Result Result; | 4057 typedef GetIntegerv::Result Result; |
| 4199 Result* result = static_cast<Result*>(shared_memory_address_); | 4058 Result* result = static_cast<Result*>(shared_memory_address_); |
| 4200 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) | 4059 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_BITS, _)) |
| 4201 .WillOnce(SetArgumentPointee<1>(24)) | 4060 .WillOnce(SetArgumentPointee<1>(24)) |
| 4202 .RetiresOnSaturation(); | 4061 .RetiresOnSaturation(); |
| 4203 result->size = 0; | 4062 result->size = 0; |
| 4204 GetIntegerv cmd2; | 4063 GetIntegerv cmd2; |
| 4205 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); | 4064 cmd2.Init(GL_DEPTH_BITS, shared_memory_id_, shared_memory_offset_); |
| 4206 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 4065 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 4207 EXPECT_EQ( | 4066 EXPECT_EQ( |
| 4208 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), | 4067 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), |
| 4209 result->GetNumResults()); | 4068 result->GetNumResults()); |
| 4210 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4069 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4211 EXPECT_EQ(0, result->GetData()[0]); | 4070 EXPECT_EQ(0, result->GetData()[0]); |
| 4212 } | 4071 } |
| 4213 | 4072 |
| 4214 TEST_P(GLES2DecoderManualInitTest, ActualStencilMatchesRequestedStencil) { | 4073 TEST_F(GLES2DecoderManualInitTest, ActualStencilMatchesRequestedStencil) { |
| 4215 InitState init; | 4074 InitState init; |
| 4216 init.gl_version = "3.0"; | 4075 init.gl_version = "3.0"; |
| 4217 init.has_stencil = true; | 4076 init.has_stencil = true; |
| 4218 init.request_stencil = true; | 4077 init.request_stencil = true; |
| 4219 init.bind_generates_resource = true; | 4078 init.bind_generates_resource = true; |
| 4220 InitDecoder(init); | 4079 InitDecoder(init); |
| 4221 | 4080 |
| 4222 EXPECT_CALL(*gl_, GetError()) | 4081 EXPECT_CALL(*gl_, GetError()) |
| 4223 .WillOnce(Return(GL_NO_ERROR)) | 4082 .WillOnce(Return(GL_NO_ERROR)) |
| 4224 .WillOnce(Return(GL_NO_ERROR)) | 4083 .WillOnce(Return(GL_NO_ERROR)) |
| 4225 .RetiresOnSaturation(); | 4084 .RetiresOnSaturation(); |
| 4226 typedef GetIntegerv::Result Result; | 4085 typedef GetIntegerv::Result Result; |
| 4227 Result* result = static_cast<Result*>(shared_memory_address_); | 4086 Result* result = static_cast<Result*>(shared_memory_address_); |
| 4228 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) | 4087 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) |
| 4229 .WillOnce(SetArgumentPointee<1>(8)) | 4088 .WillOnce(SetArgumentPointee<1>(8)) |
| 4230 .RetiresOnSaturation(); | 4089 .RetiresOnSaturation(); |
| 4231 result->size = 0; | 4090 result->size = 0; |
| 4232 GetIntegerv cmd2; | 4091 GetIntegerv cmd2; |
| 4233 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); | 4092 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); |
| 4234 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 4093 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 4235 EXPECT_EQ( | 4094 EXPECT_EQ( |
| 4236 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), | 4095 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), |
| 4237 result->GetNumResults()); | 4096 result->GetNumResults()); |
| 4238 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4097 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4239 EXPECT_EQ(8, result->GetData()[0]); | 4098 EXPECT_EQ(8, result->GetData()[0]); |
| 4240 } | 4099 } |
| 4241 | 4100 |
| 4242 TEST_P(GLES2DecoderManualInitTest, ActualStencilDoesNotMatchRequestedStencil) { | 4101 TEST_F(GLES2DecoderManualInitTest, ActualStencilDoesNotMatchRequestedStencil) { |
| 4243 InitState init; | 4102 InitState init; |
| 4244 init.gl_version = "3.0"; | 4103 init.gl_version = "3.0"; |
| 4245 init.has_stencil = true; | 4104 init.has_stencil = true; |
| 4246 init.bind_generates_resource = true; | 4105 init.bind_generates_resource = true; |
| 4247 InitDecoder(init); | 4106 InitDecoder(init); |
| 4248 | 4107 |
| 4249 EXPECT_CALL(*gl_, GetError()) | 4108 EXPECT_CALL(*gl_, GetError()) |
| 4250 .WillOnce(Return(GL_NO_ERROR)) | 4109 .WillOnce(Return(GL_NO_ERROR)) |
| 4251 .WillOnce(Return(GL_NO_ERROR)) | 4110 .WillOnce(Return(GL_NO_ERROR)) |
| 4252 .RetiresOnSaturation(); | 4111 .RetiresOnSaturation(); |
| 4253 typedef GetIntegerv::Result Result; | 4112 typedef GetIntegerv::Result Result; |
| 4254 Result* result = static_cast<Result*>(shared_memory_address_); | 4113 Result* result = static_cast<Result*>(shared_memory_address_); |
| 4255 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) | 4114 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_BITS, _)) |
| 4256 .WillOnce(SetArgumentPointee<1>(8)) | 4115 .WillOnce(SetArgumentPointee<1>(8)) |
| 4257 .RetiresOnSaturation(); | 4116 .RetiresOnSaturation(); |
| 4258 result->size = 0; | 4117 result->size = 0; |
| 4259 GetIntegerv cmd2; | 4118 GetIntegerv cmd2; |
| 4260 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); | 4119 cmd2.Init(GL_STENCIL_BITS, shared_memory_id_, shared_memory_offset_); |
| 4261 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 4120 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 4262 EXPECT_EQ( | 4121 EXPECT_EQ( |
| 4263 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), | 4122 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_BITS), |
| 4264 result->GetNumResults()); | 4123 result->GetNumResults()); |
| 4265 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4124 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4266 EXPECT_EQ(0, result->GetData()[0]); | 4125 EXPECT_EQ(0, result->GetData()[0]); |
| 4267 } | 4126 } |
| 4268 | 4127 |
| 4269 TEST_P(GLES2DecoderManualInitTest, DepthEnableWithDepth) { | 4128 TEST_F(GLES2DecoderManualInitTest, DepthEnableWithDepth) { |
| 4270 InitState init; | 4129 InitState init; |
| 4271 init.gl_version = "3.0"; | 4130 init.gl_version = "3.0"; |
| 4272 init.has_depth = true; | 4131 init.has_depth = true; |
| 4273 init.request_depth = true; | 4132 init.request_depth = true; |
| 4274 init.bind_generates_resource = true; | 4133 init.bind_generates_resource = true; |
| 4275 InitDecoder(init); | 4134 InitDecoder(init); |
| 4276 | 4135 |
| 4277 Enable cmd; | 4136 Enable cmd; |
| 4278 cmd.Init(GL_DEPTH_TEST); | 4137 cmd.Init(GL_DEPTH_TEST); |
| 4279 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4138 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 4280 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4139 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4281 | 4140 |
| 4282 SetupDefaultProgram(); | 4141 SetupDefaultProgram(); |
| 4283 SetupTexture(); | 4142 SetupTexture(); |
| 4284 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); | 4143 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); |
| 4285 SetupExpectationsForApplyingDirtyState(true, // Framebuffer is RGB | 4144 SetupExpectationsForApplyingDirtyState( |
| 4286 true, // Framebuffer has depth | 4145 true, // Framebuffer is RGB |
| 4287 false, // Framebuffer has stencil | 4146 true, // Framebuffer has depth |
| 4288 0x1110, // color bits | 4147 false, // Framebuffer has stencil |
| 4289 true, // depth mask | 4148 0x1110, // color bits |
| 4290 true, // depth enabled | 4149 true, // depth mask |
| 4291 0, // front stencil mask | 4150 true, // depth enabled |
| 4292 0, // back stencil mask | 4151 0, // front stencil mask |
| 4293 false); // stencil enabled | 4152 0, // back stencil mask |
| 4153 false, // stencil enabled |
| 4154 false, // cull_face_enabled |
| 4155 false, // scissor_test_enabled |
| 4156 false); // blend_enabled |
| 4157 |
| 4294 | 4158 |
| 4295 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 4159 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 4296 .Times(1) | 4160 .Times(1) |
| 4297 .RetiresOnSaturation(); | 4161 .RetiresOnSaturation(); |
| 4298 DrawArrays draw_cmd; | 4162 DrawArrays draw_cmd; |
| 4299 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 4163 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 4300 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); | 4164 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); |
| 4301 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4165 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4302 | 4166 |
| 4303 EXPECT_CALL(*gl_, GetError()) | 4167 EXPECT_CALL(*gl_, GetError()) |
| 4304 .WillOnce(Return(GL_NO_ERROR)) | 4168 .WillOnce(Return(GL_NO_ERROR)) |
| 4305 .WillOnce(Return(GL_NO_ERROR)) | 4169 .WillOnce(Return(GL_NO_ERROR)) |
| 4306 .RetiresOnSaturation(); | 4170 .RetiresOnSaturation(); |
| 4307 typedef GetIntegerv::Result Result; | 4171 typedef GetIntegerv::Result Result; |
| 4308 Result* result = static_cast<Result*>(shared_memory_address_); | 4172 Result* result = static_cast<Result*>(shared_memory_address_); |
| 4309 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_TEST, _)) | 4173 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_TEST, _)) |
| 4310 .Times(0) | 4174 .Times(0) |
| 4311 .RetiresOnSaturation(); | 4175 .RetiresOnSaturation(); |
| 4312 result->size = 0; | 4176 result->size = 0; |
| 4313 GetIntegerv cmd2; | 4177 GetIntegerv cmd2; |
| 4314 cmd2.Init(GL_DEPTH_TEST, shared_memory_id_, shared_memory_offset_); | 4178 cmd2.Init(GL_DEPTH_TEST, shared_memory_id_, shared_memory_offset_); |
| 4315 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 4179 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 4316 EXPECT_EQ( | 4180 EXPECT_EQ( |
| 4317 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_TEST), | 4181 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_TEST), |
| 4318 result->GetNumResults()); | 4182 result->GetNumResults()); |
| 4319 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4183 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4320 EXPECT_EQ(1, result->GetData()[0]); | 4184 EXPECT_EQ(1, result->GetData()[0]); |
| 4321 } | 4185 } |
| 4322 | 4186 |
| 4323 TEST_P(GLES2DecoderManualInitTest, DepthEnableWithoutRequestedDepth) { | 4187 TEST_F(GLES2DecoderManualInitTest, DepthEnableWithoutRequestedDepth) { |
| 4324 InitState init; | 4188 InitState init; |
| 4325 init.gl_version = "3.0"; | 4189 init.gl_version = "3.0"; |
| 4326 init.has_depth = true; | 4190 init.has_depth = true; |
| 4327 init.bind_generates_resource = true; | 4191 init.bind_generates_resource = true; |
| 4328 InitDecoder(init); | 4192 InitDecoder(init); |
| 4329 | 4193 |
| 4330 Enable cmd; | 4194 Enable cmd; |
| 4331 cmd.Init(GL_DEPTH_TEST); | 4195 cmd.Init(GL_DEPTH_TEST); |
| 4332 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4196 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 4333 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4197 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4334 | 4198 |
| 4335 SetupDefaultProgram(); | 4199 SetupDefaultProgram(); |
| 4336 SetupTexture(); | 4200 SetupTexture(); |
| 4337 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); | 4201 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); |
| 4338 SetupExpectationsForApplyingDirtyState(true, // Framebuffer is RGB | 4202 SetupExpectationsForApplyingDirtyState( |
| 4339 false, // Framebuffer has depth | 4203 true, // Framebuffer is RGB |
| 4340 false, // Framebuffer has stencil | 4204 false, // Framebuffer has depth |
| 4341 0x1110, // color bits | 4205 false, // Framebuffer has stencil |
| 4342 false, // depth mask | 4206 0x1110, // color bits |
| 4343 false, // depth enabled | 4207 false, // depth mask |
| 4344 0, // front stencil mask | 4208 false, // depth enabled |
| 4345 0, // back stencil mask | 4209 0, // front stencil mask |
| 4346 false); // stencil enabled | 4210 0, // back stencil mask |
| 4211 false, // stencil enabled |
| 4212 false, // cull_face_enabled |
| 4213 false, // scissor_test_enabled |
| 4214 false); // blend_enabled |
| 4347 | 4215 |
| 4348 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 4216 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 4349 .Times(1) | 4217 .Times(1) |
| 4350 .RetiresOnSaturation(); | 4218 .RetiresOnSaturation(); |
| 4351 DrawArrays draw_cmd; | 4219 DrawArrays draw_cmd; |
| 4352 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 4220 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 4353 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); | 4221 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); |
| 4354 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4222 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4355 | 4223 |
| 4356 EXPECT_CALL(*gl_, GetError()) | 4224 EXPECT_CALL(*gl_, GetError()) |
| 4357 .WillOnce(Return(GL_NO_ERROR)) | 4225 .WillOnce(Return(GL_NO_ERROR)) |
| 4358 .WillOnce(Return(GL_NO_ERROR)) | 4226 .WillOnce(Return(GL_NO_ERROR)) |
| 4359 .RetiresOnSaturation(); | 4227 .RetiresOnSaturation(); |
| 4360 typedef GetIntegerv::Result Result; | 4228 typedef GetIntegerv::Result Result; |
| 4361 Result* result = static_cast<Result*>(shared_memory_address_); | 4229 Result* result = static_cast<Result*>(shared_memory_address_); |
| 4362 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_TEST, _)) | 4230 EXPECT_CALL(*gl_, GetIntegerv(GL_DEPTH_TEST, _)) |
| 4363 .Times(0) | 4231 .Times(0) |
| 4364 .RetiresOnSaturation(); | 4232 .RetiresOnSaturation(); |
| 4365 result->size = 0; | 4233 result->size = 0; |
| 4366 GetIntegerv cmd2; | 4234 GetIntegerv cmd2; |
| 4367 cmd2.Init(GL_DEPTH_TEST, shared_memory_id_, shared_memory_offset_); | 4235 cmd2.Init(GL_DEPTH_TEST, shared_memory_id_, shared_memory_offset_); |
| 4368 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 4236 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 4369 EXPECT_EQ( | 4237 EXPECT_EQ( |
| 4370 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_TEST), | 4238 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_TEST), |
| 4371 result->GetNumResults()); | 4239 result->GetNumResults()); |
| 4372 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4240 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4373 EXPECT_EQ(1, result->GetData()[0]); | 4241 EXPECT_EQ(1, result->GetData()[0]); |
| 4374 } | 4242 } |
| 4375 | 4243 |
| 4376 TEST_P(GLES2DecoderManualInitTest, StencilEnableWithStencil) { | 4244 TEST_F(GLES2DecoderManualInitTest, StencilEnableWithStencil) { |
| 4377 InitState init; | 4245 InitState init; |
| 4378 init.gl_version = "3.0"; | 4246 init.gl_version = "3.0"; |
| 4379 init.has_stencil = true; | 4247 init.has_stencil = true; |
| 4380 init.request_stencil = true; | 4248 init.request_stencil = true; |
| 4381 init.bind_generates_resource = true; | 4249 init.bind_generates_resource = true; |
| 4382 InitDecoder(init); | 4250 InitDecoder(init); |
| 4383 | 4251 |
| 4384 Enable cmd; | 4252 Enable cmd; |
| 4385 cmd.Init(GL_STENCIL_TEST); | 4253 cmd.Init(GL_STENCIL_TEST); |
| 4386 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4254 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 4387 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4255 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4388 | 4256 |
| 4389 SetupDefaultProgram(); | 4257 SetupDefaultProgram(); |
| 4390 SetupTexture(); | 4258 SetupTexture(); |
| 4391 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); | 4259 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); |
| 4392 SetupExpectationsForApplyingDirtyState(true, // Framebuffer is RGB | 4260 SetupExpectationsForApplyingDirtyState( |
| 4393 false, // Framebuffer has depth | 4261 true, // Framebuffer is RGB |
| 4394 true, // Framebuffer has stencil | 4262 false, // Framebuffer has depth |
| 4395 0x1110, // color bits | 4263 true, // Framebuffer has stencil |
| 4396 false, // depth mask | 4264 0x1110, // color bits |
| 4397 false, // depth enabled | 4265 false, // depth mask |
| 4398 -1, // front stencil mask | 4266 false, // depth enabled |
| 4399 -1, // back stencil mask | 4267 -1, // front stencil mask |
| 4400 true); // stencil enabled | 4268 -1, // back stencil mask |
| 4269 true, // stencil enabled |
| 4270 false, // cull_face_enabled |
| 4271 false, // scissor_test_enabled |
| 4272 false); // blend_enabled |
| 4401 | 4273 |
| 4402 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 4274 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 4403 .Times(1) | 4275 .Times(1) |
| 4404 .RetiresOnSaturation(); | 4276 .RetiresOnSaturation(); |
| 4405 DrawArrays draw_cmd; | 4277 DrawArrays draw_cmd; |
| 4406 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 4278 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 4407 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); | 4279 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); |
| 4408 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4280 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4409 | 4281 |
| 4410 EXPECT_CALL(*gl_, GetError()) | 4282 EXPECT_CALL(*gl_, GetError()) |
| 4411 .WillOnce(Return(GL_NO_ERROR)) | 4283 .WillOnce(Return(GL_NO_ERROR)) |
| 4412 .WillOnce(Return(GL_NO_ERROR)) | 4284 .WillOnce(Return(GL_NO_ERROR)) |
| 4413 .RetiresOnSaturation(); | 4285 .RetiresOnSaturation(); |
| 4414 typedef GetIntegerv::Result Result; | 4286 typedef GetIntegerv::Result Result; |
| 4415 Result* result = static_cast<Result*>(shared_memory_address_); | 4287 Result* result = static_cast<Result*>(shared_memory_address_); |
| 4416 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_TEST, _)) | 4288 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_TEST, _)) |
| 4417 .Times(0) | 4289 .Times(0) |
| 4418 .RetiresOnSaturation(); | 4290 .RetiresOnSaturation(); |
| 4419 result->size = 0; | 4291 result->size = 0; |
| 4420 GetIntegerv cmd2; | 4292 GetIntegerv cmd2; |
| 4421 cmd2.Init(GL_STENCIL_TEST, shared_memory_id_, shared_memory_offset_); | 4293 cmd2.Init(GL_STENCIL_TEST, shared_memory_id_, shared_memory_offset_); |
| 4422 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 4294 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 4423 EXPECT_EQ( | 4295 EXPECT_EQ( |
| 4424 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_TEST), | 4296 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_TEST), |
| 4425 result->GetNumResults()); | 4297 result->GetNumResults()); |
| 4426 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4298 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4427 EXPECT_EQ(1, result->GetData()[0]); | 4299 EXPECT_EQ(1, result->GetData()[0]); |
| 4428 } | 4300 } |
| 4429 | 4301 |
| 4430 TEST_P(GLES2DecoderManualInitTest, StencilEnableWithoutRequestedStencil) { | 4302 TEST_F(GLES2DecoderManualInitTest, StencilEnableWithoutRequestedStencil) { |
| 4431 InitState init; | 4303 InitState init; |
| 4432 init.gl_version = "3.0"; | 4304 init.gl_version = "3.0"; |
| 4433 init.has_stencil = true; | 4305 init.has_stencil = true; |
| 4434 init.bind_generates_resource = true; | 4306 init.bind_generates_resource = true; |
| 4435 InitDecoder(init); | 4307 InitDecoder(init); |
| 4436 | 4308 |
| 4437 Enable cmd; | 4309 Enable cmd; |
| 4438 cmd.Init(GL_STENCIL_TEST); | 4310 cmd.Init(GL_STENCIL_TEST); |
| 4439 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4311 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 4440 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4312 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4441 | 4313 |
| 4442 SetupDefaultProgram(); | 4314 SetupDefaultProgram(); |
| 4443 SetupTexture(); | 4315 SetupTexture(); |
| 4444 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); | 4316 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); |
| 4445 SetupExpectationsForApplyingDirtyState(true, // Framebuffer is RGB | 4317 SetupExpectationsForApplyingDirtyState( |
| 4446 false, // Framebuffer has depth | 4318 true, // Framebuffer is RGB |
| 4447 false, // Framebuffer has stencil | 4319 false, // Framebuffer has depth |
| 4448 0x1110, // color bits | 4320 false, // Framebuffer has stencil |
| 4449 false, // depth mask | 4321 0x1110, // color bits |
| 4450 false, // depth enabled | 4322 false, // depth mask |
| 4451 0, // front stencil mask | 4323 false, // depth enabled |
| 4452 0, // back stencil mask | 4324 0, // front stencil mask |
| 4453 false); // stencil enabled | 4325 0, // back stencil mask |
| 4326 false, // stencil enabled |
| 4327 false, // cull_face_enabled |
| 4328 false, // scissor_test_enabled |
| 4329 false); // blend_enabled |
| 4454 | 4330 |
| 4455 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 4331 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 4456 .Times(1) | 4332 .Times(1) |
| 4457 .RetiresOnSaturation(); | 4333 .RetiresOnSaturation(); |
| 4458 DrawArrays draw_cmd; | 4334 DrawArrays draw_cmd; |
| 4459 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 4335 draw_cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 4460 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); | 4336 EXPECT_EQ(error::kNoError, ExecuteCmd(draw_cmd)); |
| 4461 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4337 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4462 | 4338 |
| 4463 EXPECT_CALL(*gl_, GetError()) | 4339 EXPECT_CALL(*gl_, GetError()) |
| 4464 .WillOnce(Return(GL_NO_ERROR)) | 4340 .WillOnce(Return(GL_NO_ERROR)) |
| 4465 .WillOnce(Return(GL_NO_ERROR)) | 4341 .WillOnce(Return(GL_NO_ERROR)) |
| 4466 .RetiresOnSaturation(); | 4342 .RetiresOnSaturation(); |
| 4467 typedef GetIntegerv::Result Result; | 4343 typedef GetIntegerv::Result Result; |
| 4468 Result* result = static_cast<Result*>(shared_memory_address_); | 4344 Result* result = static_cast<Result*>(shared_memory_address_); |
| 4469 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_TEST, _)) | 4345 EXPECT_CALL(*gl_, GetIntegerv(GL_STENCIL_TEST, _)) |
| 4470 .Times(0) | 4346 .Times(0) |
| 4471 .RetiresOnSaturation(); | 4347 .RetiresOnSaturation(); |
| 4472 result->size = 0; | 4348 result->size = 0; |
| 4473 GetIntegerv cmd2; | 4349 GetIntegerv cmd2; |
| 4474 cmd2.Init(GL_STENCIL_TEST, shared_memory_id_, shared_memory_offset_); | 4350 cmd2.Init(GL_STENCIL_TEST, shared_memory_id_, shared_memory_offset_); |
| 4475 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 4351 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 4476 EXPECT_EQ( | 4352 EXPECT_EQ( |
| 4477 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_TEST), | 4353 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_STENCIL_TEST), |
| 4478 result->GetNumResults()); | 4354 result->GetNumResults()); |
| 4479 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4355 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4480 EXPECT_EQ(1, result->GetData()[0]); | 4356 EXPECT_EQ(1, result->GetData()[0]); |
| 4481 } | 4357 } |
| 4482 | 4358 |
| 4483 TEST_P(GLES2DecoderManualInitTest, PackedDepthStencilReportsCorrectValues) { | 4359 TEST_F(GLES2DecoderManualInitTest, PackedDepthStencilReportsCorrectValues) { |
| 4484 InitState init; | 4360 InitState init; |
| 4485 init.extensions = "GL_OES_packed_depth_stencil"; | 4361 init.extensions = "GL_OES_packed_depth_stencil"; |
| 4486 init.gl_version = "opengl es 2.0"; | 4362 init.gl_version = "opengl es 2.0"; |
| 4487 init.has_depth = true; | 4363 init.has_depth = true; |
| 4488 init.has_stencil = true; | 4364 init.has_stencil = true; |
| 4489 init.request_depth = true; | 4365 init.request_depth = true; |
| 4490 init.request_stencil = true; | 4366 init.request_stencil = true; |
| 4491 init.bind_generates_resource = true; | 4367 init.bind_generates_resource = true; |
| 4492 InitDecoder(init); | 4368 InitDecoder(init); |
| 4493 | 4369 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 4517 .WillOnce(SetArgumentPointee<1>(24)) | 4393 .WillOnce(SetArgumentPointee<1>(24)) |
| 4518 .RetiresOnSaturation(); | 4394 .RetiresOnSaturation(); |
| 4519 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 4395 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 4520 EXPECT_EQ( | 4396 EXPECT_EQ( |
| 4521 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), | 4397 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), |
| 4522 result->GetNumResults()); | 4398 result->GetNumResults()); |
| 4523 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4399 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4524 EXPECT_EQ(24, result->GetData()[0]); | 4400 EXPECT_EQ(24, result->GetData()[0]); |
| 4525 } | 4401 } |
| 4526 | 4402 |
| 4527 TEST_P(GLES2DecoderManualInitTest, PackedDepthStencilNoRequestedStencil) { | 4403 TEST_F(GLES2DecoderManualInitTest, PackedDepthStencilNoRequestedStencil) { |
| 4528 InitState init; | 4404 InitState init; |
| 4529 init.extensions = "GL_OES_packed_depth_stencil"; | 4405 init.extensions = "GL_OES_packed_depth_stencil"; |
| 4530 init.gl_version = "opengl es 2.0"; | 4406 init.gl_version = "opengl es 2.0"; |
| 4531 init.has_depth = true; | 4407 init.has_depth = true; |
| 4532 init.has_stencil = true; | 4408 init.has_stencil = true; |
| 4533 init.request_depth = true; | 4409 init.request_depth = true; |
| 4534 init.bind_generates_resource = true; | 4410 init.bind_generates_resource = true; |
| 4535 InitDecoder(init); | 4411 InitDecoder(init); |
| 4536 | 4412 |
| 4537 EXPECT_CALL(*gl_, GetError()) | 4413 EXPECT_CALL(*gl_, GetError()) |
| (...skipping 22 matching lines...) Expand all Loading... |
| 4560 .WillOnce(SetArgumentPointee<1>(24)) | 4436 .WillOnce(SetArgumentPointee<1>(24)) |
| 4561 .RetiresOnSaturation(); | 4437 .RetiresOnSaturation(); |
| 4562 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 4438 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 4563 EXPECT_EQ( | 4439 EXPECT_EQ( |
| 4564 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), | 4440 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), |
| 4565 result->GetNumResults()); | 4441 result->GetNumResults()); |
| 4566 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4442 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4567 EXPECT_EQ(24, result->GetData()[0]); | 4443 EXPECT_EQ(24, result->GetData()[0]); |
| 4568 } | 4444 } |
| 4569 | 4445 |
| 4570 TEST_P(GLES2DecoderManualInitTest, PackedDepthStencilRenderbufferDepth) { | 4446 TEST_F(GLES2DecoderManualInitTest, PackedDepthStencilRenderbufferDepth) { |
| 4571 InitState init; | 4447 InitState init; |
| 4572 init.extensions = "GL_OES_packed_depth_stencil"; | 4448 init.extensions = "GL_OES_packed_depth_stencil"; |
| 4573 init.gl_version = "opengl es 2.0"; | 4449 init.gl_version = "opengl es 2.0"; |
| 4574 init.bind_generates_resource = true; | 4450 init.bind_generates_resource = true; |
| 4575 InitDecoder(init); | 4451 InitDecoder(init); |
| 4576 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, | 4452 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
| 4577 kServiceRenderbufferId); | 4453 kServiceRenderbufferId); |
| 4578 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 4454 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 4579 kServiceFramebufferId); | 4455 kServiceFramebufferId); |
| 4580 | 4456 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4627 .WillOnce(SetArgumentPointee<1>(24)) | 4503 .WillOnce(SetArgumentPointee<1>(24)) |
| 4628 .RetiresOnSaturation(); | 4504 .RetiresOnSaturation(); |
| 4629 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 4505 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 4630 EXPECT_EQ( | 4506 EXPECT_EQ( |
| 4631 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), | 4507 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), |
| 4632 result->GetNumResults()); | 4508 result->GetNumResults()); |
| 4633 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4509 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4634 EXPECT_EQ(24, result->GetData()[0]); | 4510 EXPECT_EQ(24, result->GetData()[0]); |
| 4635 } | 4511 } |
| 4636 | 4512 |
| 4637 TEST_P(GLES2DecoderManualInitTest, PackedDepthStencilRenderbufferStencil) { | 4513 TEST_F(GLES2DecoderManualInitTest, PackedDepthStencilRenderbufferStencil) { |
| 4638 InitState init; | 4514 InitState init; |
| 4639 init.extensions = "GL_OES_packed_depth_stencil"; | 4515 init.extensions = "GL_OES_packed_depth_stencil"; |
| 4640 init.gl_version = "opengl es 2.0"; | 4516 init.gl_version = "opengl es 2.0"; |
| 4641 init.bind_generates_resource = true; | 4517 init.bind_generates_resource = true; |
| 4642 InitDecoder(init); | 4518 InitDecoder(init); |
| 4643 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, | 4519 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
| 4644 kServiceRenderbufferId); | 4520 kServiceRenderbufferId); |
| 4645 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 4521 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 4646 kServiceFramebufferId); | 4522 kServiceFramebufferId); |
| 4647 | 4523 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4694 .WillOnce(SetArgumentPointee<1>(24)) | 4570 .WillOnce(SetArgumentPointee<1>(24)) |
| 4695 .RetiresOnSaturation(); | 4571 .RetiresOnSaturation(); |
| 4696 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 4572 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 4697 EXPECT_EQ( | 4573 EXPECT_EQ( |
| 4698 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), | 4574 decoder_->GetGLES2Util()->GLGetNumValuesReturned(GL_DEPTH_BITS), |
| 4699 result->GetNumResults()); | 4575 result->GetNumResults()); |
| 4700 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4576 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4701 EXPECT_EQ(0, result->GetData()[0]); | 4577 EXPECT_EQ(0, result->GetData()[0]); |
| 4702 } | 4578 } |
| 4703 | 4579 |
| 4704 TEST_P(GLES2DecoderTest, GetMultipleIntegervCHROMIUMValidArgs) { | 4580 TEST_F(GLES2DecoderTest, GetMultipleIntegervCHROMIUMValidArgs) { |
| 4705 const GLsizei kCount = 3; | 4581 const GLsizei kCount = 3; |
| 4706 GLenum* pnames = GetSharedMemoryAs<GLenum*>(); | 4582 GLenum* pnames = GetSharedMemoryAs<GLenum*>(); |
| 4707 pnames[0] = GL_DEPTH_WRITEMASK; | 4583 pnames[0] = GL_DEPTH_WRITEMASK; |
| 4708 pnames[1] = GL_COLOR_WRITEMASK; | 4584 pnames[1] = GL_COLOR_WRITEMASK; |
| 4709 pnames[2] = GL_STENCIL_WRITEMASK; | 4585 pnames[2] = GL_STENCIL_WRITEMASK; |
| 4710 GLint* results = | 4586 GLint* results = |
| 4711 GetSharedMemoryAsWithOffset<GLint*>(sizeof(*pnames) * kCount); | 4587 GetSharedMemoryAsWithOffset<GLint*>(sizeof(*pnames) * kCount); |
| 4712 | 4588 |
| 4713 GLsizei num_results = 0; | 4589 GLsizei num_results = 0; |
| 4714 for (GLsizei ii = 0; ii < kCount; ++ii) { | 4590 for (GLsizei ii = 0; ii < kCount; ++ii) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 4730 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4606 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 4731 EXPECT_EQ(1, results[0]); // Depth writemask | 4607 EXPECT_EQ(1, results[0]); // Depth writemask |
| 4732 EXPECT_EQ(1, results[1]); // color writemask red | 4608 EXPECT_EQ(1, results[1]); // color writemask red |
| 4733 EXPECT_EQ(1, results[2]); // color writemask green | 4609 EXPECT_EQ(1, results[2]); // color writemask green |
| 4734 EXPECT_EQ(1, results[3]); // color writemask blue | 4610 EXPECT_EQ(1, results[3]); // color writemask blue |
| 4735 EXPECT_EQ(1, results[4]); // color writemask alpha | 4611 EXPECT_EQ(1, results[4]); // color writemask alpha |
| 4736 EXPECT_EQ(-1, results[5]); // stencil writemask alpha | 4612 EXPECT_EQ(-1, results[5]); // stencil writemask alpha |
| 4737 EXPECT_EQ(kSentinel, results[num_results]); // End of results | 4613 EXPECT_EQ(kSentinel, results[num_results]); // End of results |
| 4738 } | 4614 } |
| 4739 | 4615 |
| 4740 TEST_P(GLES2DecoderTest, GetMultipleIntegervCHROMIUMInvalidArgs) { | 4616 TEST_F(GLES2DecoderTest, GetMultipleIntegervCHROMIUMInvalidArgs) { |
| 4741 const GLsizei kCount = 3; | 4617 const GLsizei kCount = 3; |
| 4742 // Offset the pnames because GLGetError will use the first uint32. | 4618 // Offset the pnames because GLGetError will use the first uint32. |
| 4743 const uint32 kPnameOffset = sizeof(uint32); | 4619 const uint32 kPnameOffset = sizeof(uint32); |
| 4744 const uint32 kResultsOffset = kPnameOffset + sizeof(GLint) * kCount; | 4620 const uint32 kResultsOffset = kPnameOffset + sizeof(GLint) * kCount; |
| 4745 GLenum* pnames = GetSharedMemoryAsWithOffset<GLenum*>(kPnameOffset); | 4621 GLenum* pnames = GetSharedMemoryAsWithOffset<GLenum*>(kPnameOffset); |
| 4746 pnames[0] = GL_DEPTH_WRITEMASK; | 4622 pnames[0] = GL_DEPTH_WRITEMASK; |
| 4747 pnames[1] = GL_COLOR_WRITEMASK; | 4623 pnames[1] = GL_COLOR_WRITEMASK; |
| 4748 pnames[2] = GL_STENCIL_WRITEMASK; | 4624 pnames[2] = GL_STENCIL_WRITEMASK; |
| 4749 GLint* results = GetSharedMemoryAsWithOffset<GLint*>(kResultsOffset); | 4625 GLint* results = GetSharedMemoryAsWithOffset<GLint*>(kResultsOffset); |
| 4750 | 4626 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4824 // Check buffer is what we expect | 4700 // Check buffer is what we expect |
| 4825 EXPECT_EQ(0, results[0]); | 4701 EXPECT_EQ(0, results[0]); |
| 4826 EXPECT_EQ(1, results[1]); | 4702 EXPECT_EQ(1, results[1]); |
| 4827 EXPECT_EQ(0, results[2]); | 4703 EXPECT_EQ(0, results[2]); |
| 4828 EXPECT_EQ(0, results[3]); | 4704 EXPECT_EQ(0, results[3]); |
| 4829 EXPECT_EQ(0, results[4]); | 4705 EXPECT_EQ(0, results[4]); |
| 4830 EXPECT_EQ(0, results[5]); | 4706 EXPECT_EQ(0, results[5]); |
| 4831 EXPECT_EQ(kSentinel, results[num_results]); // End of results | 4707 EXPECT_EQ(kSentinel, results[num_results]); // End of results |
| 4832 } | 4708 } |
| 4833 | 4709 |
| 4834 TEST_P(GLES2DecoderTest, TexImage2DRedefinitionSucceeds) { | 4710 TEST_F(GLES2DecoderTest, TexImage2DRedefinitionSucceeds) { |
| 4835 const int kWidth = 16; | 4711 const int kWidth = 16; |
| 4836 const int kHeight = 8; | 4712 const int kHeight = 8; |
| 4837 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 4713 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 4838 EXPECT_CALL(*gl_, GetError()) | 4714 EXPECT_CALL(*gl_, GetError()) |
| 4839 .WillRepeatedly(Return(GL_NO_ERROR)); | 4715 .WillRepeatedly(Return(GL_NO_ERROR)); |
| 4840 for (int ii = 0; ii < 2; ++ii) { | 4716 for (int ii = 0; ii < 2; ++ii) { |
| 4841 TexImage2D cmd; | 4717 TexImage2D cmd; |
| 4842 if (ii == 0) { | 4718 if (ii == 0) { |
| 4843 EXPECT_CALL(*gl_, TexImage2D( | 4719 EXPECT_CALL(*gl_, TexImage2D( |
| 4844 GL_TEXTURE_2D, 0, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, | 4720 GL_TEXTURE_2D, 0, GL_RGBA, kWidth, kHeight, 0, GL_RGBA, |
| (...skipping 21 matching lines...) Expand all Loading... |
| 4866 // (last GL_TRUE argument). It will be skipped if there are bugs in the | 4742 // (last GL_TRUE argument). It will be skipped if there are bugs in the |
| 4867 // redefinition case. | 4743 // redefinition case. |
| 4868 TexSubImage2D cmd2; | 4744 TexSubImage2D cmd2; |
| 4869 cmd2.Init( | 4745 cmd2.Init( |
| 4870 GL_TEXTURE_2D, 0, 0, 0, kWidth, kHeight - 1, GL_RGBA, GL_UNSIGNED_BYTE, | 4746 GL_TEXTURE_2D, 0, 0, 0, kWidth, kHeight - 1, GL_RGBA, GL_UNSIGNED_BYTE, |
| 4871 kSharedMemoryId, kSharedMemoryOffset, GL_TRUE); | 4747 kSharedMemoryId, kSharedMemoryOffset, GL_TRUE); |
| 4872 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 4748 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 4873 } | 4749 } |
| 4874 } | 4750 } |
| 4875 | 4751 |
| 4876 TEST_P(GLES2DecoderTest, TexImage2DGLError) { | 4752 TEST_F(GLES2DecoderTest, TexImage2DGLError) { |
| 4877 GLenum target = GL_TEXTURE_2D; | 4753 GLenum target = GL_TEXTURE_2D; |
| 4878 GLint level = 0; | 4754 GLint level = 0; |
| 4879 GLenum internal_format = GL_RGBA; | 4755 GLenum internal_format = GL_RGBA; |
| 4880 GLsizei width = 2; | 4756 GLsizei width = 2; |
| 4881 GLsizei height = 4; | 4757 GLsizei height = 4; |
| 4882 GLint border = 0; | 4758 GLint border = 0; |
| 4883 GLenum format = GL_RGBA; | 4759 GLenum format = GL_RGBA; |
| 4884 GLenum type = GL_UNSIGNED_BYTE; | 4760 GLenum type = GL_UNSIGNED_BYTE; |
| 4885 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 4761 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 4886 TextureManager* manager = group().texture_manager(); | 4762 TextureManager* manager = group().texture_manager(); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 4897 .Times(1) | 4773 .Times(1) |
| 4898 .RetiresOnSaturation(); | 4774 .RetiresOnSaturation(); |
| 4899 TexImage2D cmd; | 4775 TexImage2D cmd; |
| 4900 cmd.Init(target, level, internal_format, width, height, border, format, | 4776 cmd.Init(target, level, internal_format, width, height, border, format, |
| 4901 type, kSharedMemoryId, kSharedMemoryOffset); | 4777 type, kSharedMemoryId, kSharedMemoryOffset); |
| 4902 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4778 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 4903 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 4779 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 4904 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, level, &width, &height)); | 4780 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, level, &width, &height)); |
| 4905 } | 4781 } |
| 4906 | 4782 |
| 4907 TEST_P(GLES2DecoderTest, BufferDataGLError) { | 4783 TEST_F(GLES2DecoderTest, BufferDataGLError) { |
| 4908 GLenum target = GL_ARRAY_BUFFER; | 4784 GLenum target = GL_ARRAY_BUFFER; |
| 4909 GLsizeiptr size = 4; | 4785 GLsizeiptr size = 4; |
| 4910 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); | 4786 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); |
| 4911 BufferManager* manager = group().buffer_manager(); | 4787 BufferManager* manager = group().buffer_manager(); |
| 4912 Buffer* buffer = manager->GetBuffer(client_buffer_id_); | 4788 Buffer* buffer = manager->GetBuffer(client_buffer_id_); |
| 4913 ASSERT_TRUE(buffer != NULL); | 4789 ASSERT_TRUE(buffer != NULL); |
| 4914 EXPECT_EQ(0, buffer->size()); | 4790 EXPECT_EQ(0, buffer->size()); |
| 4915 EXPECT_CALL(*gl_, GetError()) | 4791 EXPECT_CALL(*gl_, GetError()) |
| 4916 .WillOnce(Return(GL_NO_ERROR)) | 4792 .WillOnce(Return(GL_NO_ERROR)) |
| 4917 .WillOnce(Return(GL_OUT_OF_MEMORY)) | 4793 .WillOnce(Return(GL_OUT_OF_MEMORY)) |
| 4918 .RetiresOnSaturation(); | 4794 .RetiresOnSaturation(); |
| 4919 EXPECT_CALL(*gl_, BufferData(target, size, _, GL_STREAM_DRAW)) | 4795 EXPECT_CALL(*gl_, BufferData(target, size, _, GL_STREAM_DRAW)) |
| 4920 .Times(1) | 4796 .Times(1) |
| 4921 .RetiresOnSaturation(); | 4797 .RetiresOnSaturation(); |
| 4922 BufferData cmd; | 4798 BufferData cmd; |
| 4923 cmd.Init(target, size, 0, 0, GL_STREAM_DRAW); | 4799 cmd.Init(target, size, 0, 0, GL_STREAM_DRAW); |
| 4924 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4800 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 4925 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 4801 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 4926 EXPECT_EQ(0, buffer->size()); | 4802 EXPECT_EQ(0, buffer->size()); |
| 4927 } | 4803 } |
| 4928 | 4804 |
| 4929 TEST_P(GLES2DecoderTest, CopyTexImage2DGLError) { | 4805 TEST_F(GLES2DecoderTest, CopyTexImage2DGLError) { |
| 4930 GLenum target = GL_TEXTURE_2D; | 4806 GLenum target = GL_TEXTURE_2D; |
| 4931 GLint level = 0; | 4807 GLint level = 0; |
| 4932 GLenum internal_format = GL_RGBA; | 4808 GLenum internal_format = GL_RGBA; |
| 4933 GLsizei width = 2; | 4809 GLsizei width = 2; |
| 4934 GLsizei height = 4; | 4810 GLsizei height = 4; |
| 4935 GLint border = 0; | 4811 GLint border = 0; |
| 4936 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 4812 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 4937 TextureManager* manager = group().texture_manager(); | 4813 TextureManager* manager = group().texture_manager(); |
| 4938 TextureRef* texture_ref = manager->GetTexture(client_texture_id_); | 4814 TextureRef* texture_ref = manager->GetTexture(client_texture_id_); |
| 4939 ASSERT_TRUE(texture_ref != NULL); | 4815 ASSERT_TRUE(texture_ref != NULL); |
| 4940 Texture* texture = texture_ref->texture(); | 4816 Texture* texture = texture_ref->texture(); |
| 4941 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, level, &width, &height)); | 4817 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, level, &width, &height)); |
| 4942 EXPECT_CALL(*gl_, GetError()) | 4818 EXPECT_CALL(*gl_, GetError()) |
| 4943 .WillOnce(Return(GL_NO_ERROR)) | 4819 .WillOnce(Return(GL_NO_ERROR)) |
| 4944 .WillOnce(Return(GL_OUT_OF_MEMORY)) | 4820 .WillOnce(Return(GL_OUT_OF_MEMORY)) |
| 4945 .RetiresOnSaturation(); | 4821 .RetiresOnSaturation(); |
| 4946 EXPECT_CALL(*gl_, CopyTexImage2D( | 4822 EXPECT_CALL(*gl_, CopyTexImage2D( |
| 4947 target, level, internal_format, 0, 0, width, height, border)) | 4823 target, level, internal_format, 0, 0, width, height, border)) |
| 4948 .Times(1) | 4824 .Times(1) |
| 4949 .RetiresOnSaturation(); | 4825 .RetiresOnSaturation(); |
| 4950 CopyTexImage2D cmd; | 4826 CopyTexImage2D cmd; |
| 4951 cmd.Init(target, level, internal_format, 0, 0, width, height, border); | 4827 cmd.Init(target, level, internal_format, 0, 0, width, height, border); |
| 4952 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4828 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 4953 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 4829 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 4954 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, level, &width, &height)); | 4830 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, level, &width, &height)); |
| 4955 } | 4831 } |
| 4956 | 4832 |
| 4957 TEST_P(GLES2DecoderTest, FramebufferRenderbufferGLError) { | 4833 TEST_F(GLES2DecoderTest, FramebufferRenderbufferGLError) { |
| 4958 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 4834 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 4959 kServiceFramebufferId); | 4835 kServiceFramebufferId); |
| 4960 EXPECT_CALL(*gl_, GetError()) | 4836 EXPECT_CALL(*gl_, GetError()) |
| 4961 .WillOnce(Return(GL_NO_ERROR)) | 4837 .WillOnce(Return(GL_NO_ERROR)) |
| 4962 .WillOnce(Return(GL_OUT_OF_MEMORY)) | 4838 .WillOnce(Return(GL_OUT_OF_MEMORY)) |
| 4963 .RetiresOnSaturation(); | 4839 .RetiresOnSaturation(); |
| 4964 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT( | 4840 EXPECT_CALL(*gl_, FramebufferRenderbufferEXT( |
| 4965 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, | 4841 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, |
| 4966 kServiceRenderbufferId)) | 4842 kServiceRenderbufferId)) |
| 4967 .Times(1) | 4843 .Times(1) |
| 4968 .RetiresOnSaturation(); | 4844 .RetiresOnSaturation(); |
| 4969 FramebufferRenderbuffer cmd; | 4845 FramebufferRenderbuffer cmd; |
| 4970 cmd.Init( | 4846 cmd.Init( |
| 4971 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, | 4847 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, |
| 4972 client_renderbuffer_id_); | 4848 client_renderbuffer_id_); |
| 4973 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4849 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 4974 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 4850 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 4975 } | 4851 } |
| 4976 | 4852 |
| 4977 TEST_P(GLES2DecoderTest, FramebufferTexture2DGLError) { | 4853 TEST_F(GLES2DecoderTest, FramebufferTexture2DGLError) { |
| 4978 const GLsizei kWidth = 5; | 4854 const GLsizei kWidth = 5; |
| 4979 const GLsizei kHeight = 3; | 4855 const GLsizei kHeight = 3; |
| 4980 const GLenum kFormat = GL_RGB; | 4856 const GLenum kFormat = GL_RGB; |
| 4981 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 4857 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 4982 DoTexImage2D(GL_TEXTURE_2D, 0, kFormat, kWidth, kHeight, 0, | 4858 DoTexImage2D(GL_TEXTURE_2D, 0, kFormat, kWidth, kHeight, 0, |
| 4983 kFormat, GL_UNSIGNED_BYTE, 0, 0); | 4859 kFormat, GL_UNSIGNED_BYTE, 0, 0); |
| 4984 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 4860 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 4985 kServiceFramebufferId); | 4861 kServiceFramebufferId); |
| 4986 EXPECT_CALL(*gl_, GetError()) | 4862 EXPECT_CALL(*gl_, GetError()) |
| 4987 .WillOnce(Return(GL_NO_ERROR)) | 4863 .WillOnce(Return(GL_NO_ERROR)) |
| 4988 .WillOnce(Return(GL_OUT_OF_MEMORY)) | 4864 .WillOnce(Return(GL_OUT_OF_MEMORY)) |
| 4989 .RetiresOnSaturation(); | 4865 .RetiresOnSaturation(); |
| 4990 EXPECT_CALL(*gl_, FramebufferTexture2DEXT( | 4866 EXPECT_CALL(*gl_, FramebufferTexture2DEXT( |
| 4991 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, | 4867 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, |
| 4992 kServiceTextureId, 0)) | 4868 kServiceTextureId, 0)) |
| 4993 .Times(1) | 4869 .Times(1) |
| 4994 .RetiresOnSaturation(); | 4870 .RetiresOnSaturation(); |
| 4995 FramebufferTexture2D fbtex_cmd; | 4871 FramebufferTexture2D fbtex_cmd; |
| 4996 fbtex_cmd.Init( | 4872 fbtex_cmd.Init( |
| 4997 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_, | 4873 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_, |
| 4998 0); | 4874 0); |
| 4999 EXPECT_EQ(error::kNoError, ExecuteCmd(fbtex_cmd)); | 4875 EXPECT_EQ(error::kNoError, ExecuteCmd(fbtex_cmd)); |
| 5000 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 4876 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 5001 } | 4877 } |
| 5002 | 4878 |
| 5003 TEST_P(GLES2DecoderTest, RenderbufferStorageGLError) { | 4879 TEST_F(GLES2DecoderTest, RenderbufferStorageGLError) { |
| 5004 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, | 4880 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
| 5005 kServiceRenderbufferId); | 4881 kServiceRenderbufferId); |
| 5006 EXPECT_CALL(*gl_, GetError()) | 4882 EXPECT_CALL(*gl_, GetError()) |
| 5007 .WillOnce(Return(GL_NO_ERROR)) | 4883 .WillOnce(Return(GL_NO_ERROR)) |
| 5008 .WillOnce(Return(GL_OUT_OF_MEMORY)) | 4884 .WillOnce(Return(GL_OUT_OF_MEMORY)) |
| 5009 .RetiresOnSaturation(); | 4885 .RetiresOnSaturation(); |
| 5010 EXPECT_CALL(*gl_, RenderbufferStorageEXT( | 4886 EXPECT_CALL(*gl_, RenderbufferStorageEXT( |
| 5011 GL_RENDERBUFFER, GL_RGBA, 100, 50)) | 4887 GL_RENDERBUFFER, GL_RGBA, 100, 50)) |
| 5012 .Times(1) | 4888 .Times(1) |
| 5013 .RetiresOnSaturation(); | 4889 .RetiresOnSaturation(); |
| 5014 RenderbufferStorage cmd; | 4890 RenderbufferStorage cmd; |
| 5015 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 100, 50); | 4891 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 100, 50); |
| 5016 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4892 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5017 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 4893 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 5018 } | 4894 } |
| 5019 | 4895 |
| 5020 TEST_P(GLES2DecoderTest, RenderbufferStorageBadArgs) { | 4896 TEST_F(GLES2DecoderTest, RenderbufferStorageBadArgs) { |
| 5021 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, | 4897 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
| 5022 kServiceRenderbufferId); | 4898 kServiceRenderbufferId); |
| 5023 EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)) | 4899 EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)) |
| 5024 .Times(0) | 4900 .Times(0) |
| 5025 .RetiresOnSaturation(); | 4901 .RetiresOnSaturation(); |
| 5026 RenderbufferStorage cmd; | 4902 RenderbufferStorage cmd; |
| 5027 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, TestHelper::kMaxRenderbufferSize + 1, 1); | 4903 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, TestHelper::kMaxRenderbufferSize + 1, 1); |
| 5028 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4904 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5029 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 4905 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 5030 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 1, TestHelper::kMaxRenderbufferSize + 1); | 4906 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 1, TestHelper::kMaxRenderbufferSize + 1); |
| 5031 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4907 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5032 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 4908 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 5033 } | 4909 } |
| 5034 | 4910 |
| 5035 TEST_P(GLES2DecoderManualInitTest, | 4911 TEST_F(GLES2DecoderManualInitTest, |
| 5036 RenderbufferStorageMultisampleCHROMIUMGLError) { | 4912 RenderbufferStorageMultisampleCHROMIUMGLError) { |
| 5037 InitState init; | 4913 InitState init; |
| 5038 init.extensions = "GL_EXT_framebuffer_multisample"; | 4914 init.extensions = "GL_EXT_framebuffer_multisample"; |
| 5039 init.gl_version = "2.1"; | 4915 init.gl_version = "2.1"; |
| 5040 init.bind_generates_resource = true; | 4916 init.bind_generates_resource = true; |
| 5041 InitDecoder(init); | 4917 InitDecoder(init); |
| 5042 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, | 4918 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
| 5043 kServiceRenderbufferId); | 4919 kServiceRenderbufferId); |
| 5044 EXPECT_CALL(*gl_, GetError()) | 4920 EXPECT_CALL(*gl_, GetError()) |
| 5045 .WillOnce(Return(GL_NO_ERROR)) | 4921 .WillOnce(Return(GL_NO_ERROR)) |
| 5046 .WillOnce(Return(GL_OUT_OF_MEMORY)) | 4922 .WillOnce(Return(GL_OUT_OF_MEMORY)) |
| 5047 .RetiresOnSaturation(); | 4923 .RetiresOnSaturation(); |
| 5048 EXPECT_CALL(*gl_, RenderbufferStorageMultisampleEXT( | 4924 EXPECT_CALL(*gl_, RenderbufferStorageMultisampleEXT( |
| 5049 GL_RENDERBUFFER, 1, GL_RGBA, 100, 50)) | 4925 GL_RENDERBUFFER, 1, GL_RGBA, 100, 50)) |
| 5050 .Times(1) | 4926 .Times(1) |
| 5051 .RetiresOnSaturation(); | 4927 .RetiresOnSaturation(); |
| 5052 RenderbufferStorageMultisampleCHROMIUM cmd; | 4928 RenderbufferStorageMultisampleCHROMIUM cmd; |
| 5053 cmd.Init(GL_RENDERBUFFER, 1, GL_RGBA4, 100, 50); | 4929 cmd.Init(GL_RENDERBUFFER, 1, GL_RGBA4, 100, 50); |
| 5054 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4930 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5055 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 4931 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 5056 } | 4932 } |
| 5057 | 4933 |
| 5058 TEST_P(GLES2DecoderManualInitTest, | 4934 TEST_F(GLES2DecoderManualInitTest, |
| 5059 RenderbufferStorageMultisampleCHROMIUMBadArgs) { | 4935 RenderbufferStorageMultisampleCHROMIUMBadArgs) { |
| 5060 InitState init; | 4936 InitState init; |
| 5061 init.extensions = "GL_EXT_framebuffer_multisample"; | 4937 init.extensions = "GL_EXT_framebuffer_multisample"; |
| 5062 init.gl_version = "2.1"; | 4938 init.gl_version = "2.1"; |
| 5063 init.bind_generates_resource = true; | 4939 init.bind_generates_resource = true; |
| 5064 InitDecoder(init); | 4940 InitDecoder(init); |
| 5065 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, | 4941 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
| 5066 kServiceRenderbufferId); | 4942 kServiceRenderbufferId); |
| 5067 EXPECT_CALL(*gl_, RenderbufferStorageMultisampleEXT(_, _, _, _, _)) | 4943 EXPECT_CALL(*gl_, RenderbufferStorageMultisampleEXT(_, _, _, _, _)) |
| 5068 .Times(0) | 4944 .Times(0) |
| 5069 .RetiresOnSaturation(); | 4945 .RetiresOnSaturation(); |
| 5070 RenderbufferStorageMultisampleCHROMIUM cmd; | 4946 RenderbufferStorageMultisampleCHROMIUM cmd; |
| 5071 cmd.Init(GL_RENDERBUFFER, TestHelper::kMaxSamples + 1, | 4947 cmd.Init(GL_RENDERBUFFER, TestHelper::kMaxSamples + 1, |
| 5072 GL_RGBA4, TestHelper::kMaxRenderbufferSize, 1); | 4948 GL_RGBA4, TestHelper::kMaxRenderbufferSize, 1); |
| 5073 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4949 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5074 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 4950 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 5075 cmd.Init(GL_RENDERBUFFER, TestHelper::kMaxSamples, | 4951 cmd.Init(GL_RENDERBUFFER, TestHelper::kMaxSamples, |
| 5076 GL_RGBA4, TestHelper::kMaxRenderbufferSize + 1, 1); | 4952 GL_RGBA4, TestHelper::kMaxRenderbufferSize + 1, 1); |
| 5077 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4953 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5078 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 4954 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 5079 cmd.Init(GL_RENDERBUFFER, TestHelper::kMaxSamples, | 4955 cmd.Init(GL_RENDERBUFFER, TestHelper::kMaxSamples, |
| 5080 GL_RGBA4, 1, TestHelper::kMaxRenderbufferSize + 1); | 4956 GL_RGBA4, 1, TestHelper::kMaxRenderbufferSize + 1); |
| 5081 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4957 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5082 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 4958 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 5083 } | 4959 } |
| 5084 | 4960 |
| 5085 TEST_P(GLES2DecoderManualInitTest, RenderbufferStorageMultisampleCHROMIUM) { | 4961 TEST_F(GLES2DecoderManualInitTest, RenderbufferStorageMultisampleCHROMIUM) { |
| 5086 InitState init; | 4962 InitState init; |
| 5087 init.extensions = "GL_EXT_framebuffer_multisample"; | 4963 init.extensions = "GL_EXT_framebuffer_multisample"; |
| 5088 init.gl_version = "2.1"; | 4964 init.gl_version = "2.1"; |
| 5089 InitDecoder(init); | 4965 InitDecoder(init); |
| 5090 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, | 4966 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
| 5091 kServiceRenderbufferId); | 4967 kServiceRenderbufferId); |
| 5092 InSequence sequence; | 4968 InSequence sequence; |
| 5093 EXPECT_CALL(*gl_, GetError()) | 4969 EXPECT_CALL(*gl_, GetError()) |
| 5094 .WillOnce(Return(GL_NO_ERROR)) | 4970 .WillOnce(Return(GL_NO_ERROR)) |
| 5095 .RetiresOnSaturation(); | 4971 .RetiresOnSaturation(); |
| 5096 EXPECT_CALL( | 4972 EXPECT_CALL( |
| 5097 *gl_, | 4973 *gl_, |
| 5098 RenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, | 4974 RenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, |
| 5099 TestHelper::kMaxSamples, | 4975 TestHelper::kMaxSamples, |
| 5100 GL_RGBA, | 4976 GL_RGBA, |
| 5101 TestHelper::kMaxRenderbufferSize, | 4977 TestHelper::kMaxRenderbufferSize, |
| 5102 1)) | 4978 1)) |
| 5103 .Times(1) | 4979 .Times(1) |
| 5104 .RetiresOnSaturation(); | 4980 .RetiresOnSaturation(); |
| 5105 EXPECT_CALL(*gl_, GetError()) | 4981 EXPECT_CALL(*gl_, GetError()) |
| 5106 .WillOnce(Return(GL_NO_ERROR)) | 4982 .WillOnce(Return(GL_NO_ERROR)) |
| 5107 .RetiresOnSaturation(); | 4983 .RetiresOnSaturation(); |
| 5108 RenderbufferStorageMultisampleCHROMIUM cmd; | 4984 RenderbufferStorageMultisampleCHROMIUM cmd; |
| 5109 cmd.Init(GL_RENDERBUFFER, TestHelper::kMaxSamples, | 4985 cmd.Init(GL_RENDERBUFFER, TestHelper::kMaxSamples, |
| 5110 GL_RGBA4, TestHelper::kMaxRenderbufferSize, 1); | 4986 GL_RGBA4, TestHelper::kMaxRenderbufferSize, 1); |
| 5111 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4987 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5112 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 4988 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5113 } | 4989 } |
| 5114 | 4990 |
| 5115 TEST_P(GLES2DecoderManualInitTest, | 4991 TEST_F(GLES2DecoderManualInitTest, |
| 5116 RenderbufferStorageMultisampleEXTNotSupported) { | 4992 RenderbufferStorageMultisampleEXTNotSupported) { |
| 5117 InitState init; | 4993 InitState init; |
| 5118 init.extensions = "GL_EXT_framebuffer_multisample"; | 4994 init.extensions = "GL_EXT_framebuffer_multisample"; |
| 5119 init.gl_version = "2.1"; | 4995 init.gl_version = "2.1"; |
| 5120 init.bind_generates_resource = true; | 4996 init.bind_generates_resource = true; |
| 5121 InitDecoder(init); | 4997 InitDecoder(init); |
| 5122 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, | 4998 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
| 5123 kServiceRenderbufferId); | 4999 kServiceRenderbufferId); |
| 5124 InSequence sequence; | 5000 InSequence sequence; |
| 5125 // GL_EXT_framebuffer_multisample uses RenderbufferStorageMultisampleCHROMIUM. | 5001 // GL_EXT_framebuffer_multisample uses RenderbufferStorageMultisampleCHROMIUM. |
| 5126 RenderbufferStorageMultisampleEXT cmd; | 5002 RenderbufferStorageMultisampleEXT cmd; |
| 5127 cmd.Init(GL_RENDERBUFFER, TestHelper::kMaxSamples, | 5003 cmd.Init(GL_RENDERBUFFER, TestHelper::kMaxSamples, |
| 5128 GL_RGBA4, TestHelper::kMaxRenderbufferSize, 1); | 5004 GL_RGBA4, TestHelper::kMaxRenderbufferSize, 1); |
| 5129 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5005 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5130 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 5006 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 5131 } | 5007 } |
| 5132 | 5008 |
| 5133 class GLES2DecoderMultisampledRenderToTextureTest | 5009 class GLES2DecoderMultisampledRenderToTextureTest |
| 5134 : public GLES2DecoderTestWithExtensionsOnGLES2 { | 5010 : public GLES2DecoderTestWithExtensionsOnGLES2 {}; |
| 5135 public: | |
| 5136 void TestNotCompatibleWithRenderbufferStorageMultisampleCHROMIUM() { | |
| 5137 DoBindRenderbuffer( | |
| 5138 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); | |
| 5139 RenderbufferStorageMultisampleCHROMIUM cmd; | |
| 5140 cmd.Init(GL_RENDERBUFFER, | |
| 5141 TestHelper::kMaxSamples, | |
| 5142 GL_RGBA4, | |
| 5143 TestHelper::kMaxRenderbufferSize, | |
| 5144 1); | |
| 5145 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | |
| 5146 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | |
| 5147 } | |
| 5148 | |
| 5149 void TestRenderbufferStorageMultisampleEXT(const char* extension) { | |
| 5150 DoBindRenderbuffer( | |
| 5151 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); | |
| 5152 InSequence sequence; | |
| 5153 EXPECT_CALL(*gl_, GetError()) | |
| 5154 .WillOnce(Return(GL_NO_ERROR)) | |
| 5155 .RetiresOnSaturation(); | |
| 5156 if (strstr(extension, "GL_IMG_multisampled_render_to_texture")) { | |
| 5157 EXPECT_CALL( | |
| 5158 *gl_, | |
| 5159 RenderbufferStorageMultisampleIMG(GL_RENDERBUFFER, | |
| 5160 TestHelper::kMaxSamples, | |
| 5161 GL_RGBA, | |
| 5162 TestHelper::kMaxRenderbufferSize, | |
| 5163 1)) | |
| 5164 .Times(1) | |
| 5165 .RetiresOnSaturation(); | |
| 5166 } else { | |
| 5167 EXPECT_CALL( | |
| 5168 *gl_, | |
| 5169 RenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, | |
| 5170 TestHelper::kMaxSamples, | |
| 5171 GL_RGBA, | |
| 5172 TestHelper::kMaxRenderbufferSize, | |
| 5173 1)) | |
| 5174 .Times(1) | |
| 5175 .RetiresOnSaturation(); | |
| 5176 } | |
| 5177 EXPECT_CALL(*gl_, GetError()) | |
| 5178 .WillOnce(Return(GL_NO_ERROR)) | |
| 5179 .RetiresOnSaturation(); | |
| 5180 RenderbufferStorageMultisampleEXT cmd; | |
| 5181 cmd.Init(GL_RENDERBUFFER, | |
| 5182 TestHelper::kMaxSamples, | |
| 5183 GL_RGBA4, | |
| 5184 TestHelper::kMaxRenderbufferSize, | |
| 5185 1); | |
| 5186 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | |
| 5187 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | |
| 5188 } | |
| 5189 }; | |
| 5190 | 5011 |
| 5191 TEST_P(GLES2DecoderMultisampledRenderToTextureTest, | 5012 TEST_P(GLES2DecoderMultisampledRenderToTextureTest, |
| 5192 NotCompatibleWithRenderbufferStorageMultisampleCHROMIUM_EXT) { | 5013 NotCompatibleWithRenderbufferStorageMultisampleCHROMIUM) { |
| 5193 Init("GL_EXT_multisampled_render_to_texture"); | 5014 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
| 5194 TestNotCompatibleWithRenderbufferStorageMultisampleCHROMIUM(); | 5015 kServiceRenderbufferId); |
| 5016 RenderbufferStorageMultisampleCHROMIUM cmd; |
| 5017 cmd.Init(GL_RENDERBUFFER, TestHelper::kMaxSamples, |
| 5018 GL_RGBA4, TestHelper::kMaxRenderbufferSize, 1); |
| 5019 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5020 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 5195 } | 5021 } |
| 5196 | 5022 |
| 5197 TEST_P(GLES2DecoderMultisampledRenderToTextureTest, | 5023 TEST_P(GLES2DecoderMultisampledRenderToTextureTest, |
| 5198 NotCompatibleWithRenderbufferStorageMultisampleCHROMIUM_IMG) { | 5024 RenderbufferStorageMultisampleEXT) { |
| 5199 Init("GL_IMG_multisampled_render_to_texture"); | 5025 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
| 5200 TestNotCompatibleWithRenderbufferStorageMultisampleCHROMIUM(); | 5026 kServiceRenderbufferId); |
| 5027 InSequence sequence; |
| 5028 EXPECT_CALL(*gl_, GetError()) |
| 5029 .WillOnce(Return(GL_NO_ERROR)) |
| 5030 .RetiresOnSaturation(); |
| 5031 if (strstr(GetParam(), "GL_IMG_multisampled_render_to_texture")) { |
| 5032 EXPECT_CALL( |
| 5033 *gl_, |
| 5034 RenderbufferStorageMultisampleIMG(GL_RENDERBUFFER, |
| 5035 TestHelper::kMaxSamples, |
| 5036 GL_RGBA, |
| 5037 TestHelper::kMaxRenderbufferSize, |
| 5038 1)) |
| 5039 .Times(1) |
| 5040 .RetiresOnSaturation(); |
| 5041 } else { |
| 5042 EXPECT_CALL( |
| 5043 *gl_, |
| 5044 RenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, |
| 5045 TestHelper::kMaxSamples, |
| 5046 GL_RGBA, |
| 5047 TestHelper::kMaxRenderbufferSize, |
| 5048 1)) |
| 5049 .Times(1) |
| 5050 .RetiresOnSaturation(); |
| 5051 } |
| 5052 EXPECT_CALL(*gl_, GetError()) |
| 5053 .WillOnce(Return(GL_NO_ERROR)) |
| 5054 .RetiresOnSaturation(); |
| 5055 RenderbufferStorageMultisampleEXT cmd; |
| 5056 cmd.Init(GL_RENDERBUFFER, TestHelper::kMaxSamples, |
| 5057 GL_RGBA4, TestHelper::kMaxRenderbufferSize, 1); |
| 5058 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5059 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5201 } | 5060 } |
| 5202 | 5061 |
| 5203 TEST_P(GLES2DecoderMultisampledRenderToTextureTest, | 5062 INSTANTIATE_TEST_CASE_P( |
| 5204 RenderbufferStorageMultisampleEXT_EXT) { | 5063 GLES2DecoderMultisampledRenderToTextureTests, |
| 5205 Init("GL_EXT_multisampled_render_to_texture"); | 5064 GLES2DecoderMultisampledRenderToTextureTest, |
| 5206 TestRenderbufferStorageMultisampleEXT( | 5065 ::testing::Values("GL_EXT_multisampled_render_to_texture", |
| 5207 "GL_EXT_multisampled_render_to_texture"); | 5066 "GL_IMG_multisampled_render_to_texture")); |
| 5208 } | |
| 5209 | 5067 |
| 5210 TEST_P(GLES2DecoderMultisampledRenderToTextureTest, | 5068 TEST_F(GLES2DecoderTest, ReadPixelsGLError) { |
| 5211 RenderbufferStorageMultisampleEXT_IMG) { | |
| 5212 Init("GL_IMG_multisampled_render_to_texture"); | |
| 5213 TestRenderbufferStorageMultisampleEXT( | |
| 5214 "GL_IMG_multisampled_render_to_texture"); | |
| 5215 } | |
| 5216 | |
| 5217 TEST_P(GLES2DecoderTest, ReadPixelsGLError) { | |
| 5218 GLenum kFormat = GL_RGBA; | 5069 GLenum kFormat = GL_RGBA; |
| 5219 GLint x = 0; | 5070 GLint x = 0; |
| 5220 GLint y = 0; | 5071 GLint y = 0; |
| 5221 GLsizei width = 2; | 5072 GLsizei width = 2; |
| 5222 GLsizei height = 4; | 5073 GLsizei height = 4; |
| 5223 typedef ReadPixels::Result Result; | 5074 typedef ReadPixels::Result Result; |
| 5224 Result* result = GetSharedMemoryAs<Result*>(); | 5075 Result* result = GetSharedMemoryAs<Result*>(); |
| 5225 uint32 result_shm_id = kSharedMemoryId; | 5076 uint32 result_shm_id = kSharedMemoryId; |
| 5226 uint32 result_shm_offset = kSharedMemoryOffset; | 5077 uint32 result_shm_offset = kSharedMemoryOffset; |
| 5227 uint32 pixels_shm_id = kSharedMemoryId; | 5078 uint32 pixels_shm_id = kSharedMemoryId; |
| 5228 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(*result); | 5079 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(*result); |
| 5229 EXPECT_CALL(*gl_, GetError()) | 5080 EXPECT_CALL(*gl_, GetError()) |
| 5230 .WillOnce(Return(GL_NO_ERROR)) | 5081 .WillOnce(Return(GL_NO_ERROR)) |
| 5231 .WillOnce(Return(GL_OUT_OF_MEMORY)) | 5082 .WillOnce(Return(GL_OUT_OF_MEMORY)) |
| 5232 .RetiresOnSaturation(); | 5083 .RetiresOnSaturation(); |
| 5233 EXPECT_CALL( | 5084 EXPECT_CALL( |
| 5234 *gl_, ReadPixels(x, y, width, height, kFormat, GL_UNSIGNED_BYTE, _)) | 5085 *gl_, ReadPixels(x, y, width, height, kFormat, GL_UNSIGNED_BYTE, _)) |
| 5235 .Times(1) | 5086 .Times(1) |
| 5236 .RetiresOnSaturation(); | 5087 .RetiresOnSaturation(); |
| 5237 ReadPixels cmd; | 5088 ReadPixels cmd; |
| 5238 cmd.Init(x, y, width, height, kFormat, GL_UNSIGNED_BYTE, | 5089 cmd.Init(x, y, width, height, kFormat, GL_UNSIGNED_BYTE, |
| 5239 pixels_shm_id, pixels_shm_offset, | 5090 pixels_shm_id, pixels_shm_offset, |
| 5240 result_shm_id, result_shm_offset, | 5091 result_shm_id, result_shm_offset, |
| 5241 false); | 5092 false); |
| 5242 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5093 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5243 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 5094 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 5244 } | 5095 } |
| 5245 | 5096 |
| 5246 TEST_P(GLES2DecoderCompressedFormatsTest, GetCompressedTextureFormatsS3TC) { | 5097 TEST_F(GLES2DecoderCompressedFormatsTest, GetCompressedTextureFormatsS3TC) { |
| 5247 const GLenum formats[] = { | 5098 const GLenum formats[] = { |
| 5248 GL_COMPRESSED_RGB_S3TC_DXT1_EXT, | 5099 GL_COMPRESSED_RGB_S3TC_DXT1_EXT, |
| 5249 GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, | 5100 GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, |
| 5250 GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, | 5101 GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, |
| 5251 GL_COMPRESSED_RGBA_S3TC_DXT5_EXT | 5102 GL_COMPRESSED_RGBA_S3TC_DXT5_EXT |
| 5252 }; | 5103 }; |
| 5253 CheckFormats("GL_EXT_texture_compression_s3tc", formats, 4); | 5104 CheckFormats("GL_EXT_texture_compression_s3tc", formats, 4); |
| 5254 } | 5105 } |
| 5255 | 5106 |
| 5256 TEST_P(GLES2DecoderCompressedFormatsTest, GetCompressedTextureFormatsATC) { | 5107 TEST_F(GLES2DecoderCompressedFormatsTest, GetCompressedTextureFormatsATC) { |
| 5257 const GLenum formats[] = { | 5108 const GLenum formats[] = { |
| 5258 GL_ATC_RGB_AMD, | 5109 GL_ATC_RGB_AMD, |
| 5259 GL_ATC_RGBA_EXPLICIT_ALPHA_AMD, | 5110 GL_ATC_RGBA_EXPLICIT_ALPHA_AMD, |
| 5260 GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD | 5111 GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD |
| 5261 }; | 5112 }; |
| 5262 CheckFormats("GL_AMD_compressed_ATC_texture", formats, 3); | 5113 CheckFormats("GL_AMD_compressed_ATC_texture", formats, 3); |
| 5263 } | 5114 } |
| 5264 | 5115 |
| 5265 TEST_P(GLES2DecoderCompressedFormatsTest, GetCompressedTextureFormatsPVRTC) { | 5116 TEST_F(GLES2DecoderCompressedFormatsTest, GetCompressedTextureFormatsPVRTC) { |
| 5266 const GLenum formats[] = { | 5117 const GLenum formats[] = { |
| 5267 GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG, | 5118 GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG, |
| 5268 GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG, | 5119 GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG, |
| 5269 GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, | 5120 GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, |
| 5270 GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG | 5121 GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG |
| 5271 }; | 5122 }; |
| 5272 CheckFormats("GL_IMG_texture_compression_pvrtc", formats, 4); | 5123 CheckFormats("GL_IMG_texture_compression_pvrtc", formats, 4); |
| 5273 } | 5124 } |
| 5274 | 5125 |
| 5275 TEST_P(GLES2DecoderCompressedFormatsTest, GetCompressedTextureFormatsETC1) { | 5126 TEST_F(GLES2DecoderCompressedFormatsTest, GetCompressedTextureFormatsETC1) { |
| 5276 const GLenum formats[] = { | 5127 const GLenum formats[] = { |
| 5277 GL_ETC1_RGB8_OES | 5128 GL_ETC1_RGB8_OES |
| 5278 }; | 5129 }; |
| 5279 CheckFormats("GL_OES_compressed_ETC1_RGB8_texture", formats, 1); | 5130 CheckFormats("GL_OES_compressed_ETC1_RGB8_texture", formats, 1); |
| 5280 } | 5131 } |
| 5281 | 5132 |
| 5282 TEST_P(GLES2DecoderManualInitTest, GetNoCompressedTextureFormats) { | 5133 TEST_F(GLES2DecoderManualInitTest, GetNoCompressedTextureFormats) { |
| 5283 InitState init; | 5134 InitState init; |
| 5284 init.gl_version = "3.0"; | 5135 init.gl_version = "3.0"; |
| 5285 init.bind_generates_resource = true; | 5136 init.bind_generates_resource = true; |
| 5286 InitDecoder(init); | 5137 InitDecoder(init); |
| 5287 | 5138 |
| 5288 EXPECT_CALL(*gl_, GetError()) | 5139 EXPECT_CALL(*gl_, GetError()) |
| 5289 .WillOnce(Return(GL_NO_ERROR)) | 5140 .WillOnce(Return(GL_NO_ERROR)) |
| 5290 .WillOnce(Return(GL_NO_ERROR)) | 5141 .WillOnce(Return(GL_NO_ERROR)) |
| 5291 .WillOnce(Return(GL_NO_ERROR)) | 5142 .WillOnce(Return(GL_NO_ERROR)) |
| 5292 .WillOnce(Return(GL_NO_ERROR)) | 5143 .WillOnce(Return(GL_NO_ERROR)) |
| (...skipping 18 matching lines...) Expand all Loading... |
| 5311 result->size = 0; | 5162 result->size = 0; |
| 5312 cmd.Init( | 5163 cmd.Init( |
| 5313 GL_COMPRESSED_TEXTURE_FORMATS, | 5164 GL_COMPRESSED_TEXTURE_FORMATS, |
| 5314 shared_memory_id_, shared_memory_offset_); | 5165 shared_memory_id_, shared_memory_offset_); |
| 5315 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5166 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5316 EXPECT_EQ(num_formats, result->GetNumResults()); | 5167 EXPECT_EQ(num_formats, result->GetNumResults()); |
| 5317 | 5168 |
| 5318 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5169 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5319 } | 5170 } |
| 5320 | 5171 |
| 5321 TEST_P(GLES2DecoderManualInitTest, CompressedTexImage2DBucketBadBucket) { | 5172 TEST_F(GLES2DecoderManualInitTest, CompressedTexImage2DBucketBadBucket) { |
| 5322 InitState init; | 5173 InitState init; |
| 5323 init.extensions = "GL_EXT_texture_compression_s3tc"; | 5174 init.extensions = "GL_EXT_texture_compression_s3tc"; |
| 5324 init.gl_version = "3.0"; | 5175 init.gl_version = "3.0"; |
| 5325 init.bind_generates_resource = true; | 5176 init.bind_generates_resource = true; |
| 5326 InitDecoder(init); | 5177 InitDecoder(init); |
| 5327 | 5178 |
| 5328 const uint32 kBadBucketId = 123; | 5179 const uint32 kBadBucketId = 123; |
| 5329 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 5180 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 5330 CompressedTexImage2DBucket cmd; | 5181 CompressedTexImage2DBucket cmd; |
| 5331 cmd.Init( | 5182 cmd.Init( |
| 5332 GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, 4, 4, 0, | 5183 GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, 4, 4, 0, |
| 5333 kBadBucketId); | 5184 kBadBucketId); |
| 5334 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 5185 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 5335 CompressedTexSubImage2DBucket cmd2; | 5186 CompressedTexSubImage2DBucket cmd2; |
| 5336 cmd2.Init( | 5187 cmd2.Init( |
| 5337 GL_TEXTURE_2D, 0, 0, 0, 4, 4, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, | 5188 GL_TEXTURE_2D, 0, 0, 0, 4, 4, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, |
| 5338 kBadBucketId); | 5189 kBadBucketId); |
| 5339 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 5190 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 5340 } | 5191 } |
| 5341 | 5192 |
| 5342 namespace { | 5193 namespace { |
| 5343 | 5194 |
| 5344 struct S3TCTestData { | 5195 struct S3TCTestData { |
| 5345 GLenum format; | 5196 GLenum format; |
| 5346 size_t block_size; | 5197 size_t block_size; |
| 5347 }; | 5198 }; |
| 5348 | 5199 |
| 5349 } // anonymous namespace. | 5200 } // anonymous namespace. |
| 5350 | 5201 |
| 5351 TEST_P(GLES2DecoderManualInitTest, CompressedTexImage2DS3TC) { | 5202 TEST_F(GLES2DecoderManualInitTest, CompressedTexImage2DS3TC) { |
| 5352 InitState init; | 5203 InitState init; |
| 5353 init.extensions = "GL_EXT_texture_compression_s3tc"; | 5204 init.extensions = "GL_EXT_texture_compression_s3tc"; |
| 5354 init.gl_version = "3.0"; | 5205 init.gl_version = "3.0"; |
| 5355 init.bind_generates_resource = true; | 5206 init.bind_generates_resource = true; |
| 5356 InitDecoder(init); | 5207 InitDecoder(init); |
| 5357 const uint32 kBucketId = 123; | 5208 const uint32 kBucketId = 123; |
| 5358 CommonDecoder::Bucket* bucket = decoder_->CreateBucket(kBucketId); | 5209 CommonDecoder::Bucket* bucket = decoder_->CreateBucket(kBucketId); |
| 5359 ASSERT_TRUE(bucket != NULL); | 5210 ASSERT_TRUE(bucket != NULL); |
| 5360 | 5211 |
| 5361 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 5212 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5491 kBucketId); | 5342 kBucketId); |
| 5492 EXPECT_EQ(error::kNoError, ExecuteCmd(sub_cmd)); | 5343 EXPECT_EQ(error::kNoError, ExecuteCmd(sub_cmd)); |
| 5493 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5344 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5494 } | 5345 } |
| 5495 } | 5346 } |
| 5496 } | 5347 } |
| 5497 } | 5348 } |
| 5498 } | 5349 } |
| 5499 } | 5350 } |
| 5500 | 5351 |
| 5501 TEST_P(GLES2DecoderManualInitTest, CompressedTexImage2DETC1) { | 5352 TEST_F(GLES2DecoderManualInitTest, CompressedTexImage2DETC1) { |
| 5502 InitState init; | 5353 InitState init; |
| 5503 init.extensions = "GL_OES_compressed_ETC1_RGB8_texture"; | 5354 init.extensions = "GL_OES_compressed_ETC1_RGB8_texture"; |
| 5504 init.gl_version = "opengl es 2.0"; | 5355 init.gl_version = "opengl es 2.0"; |
| 5505 init.bind_generates_resource = true; | 5356 init.bind_generates_resource = true; |
| 5506 InitDecoder(init); | 5357 InitDecoder(init); |
| 5507 const uint32 kBucketId = 123; | 5358 const uint32 kBucketId = 123; |
| 5508 CommonDecoder::Bucket* bucket = decoder_->CreateBucket(kBucketId); | 5359 CommonDecoder::Bucket* bucket = decoder_->CreateBucket(kBucketId); |
| 5509 ASSERT_TRUE(bucket != NULL); | 5360 ASSERT_TRUE(bucket != NULL); |
| 5510 | 5361 |
| 5511 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 5362 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5559 EXPECT_EQ(error::kNoError, ExecuteCmd(texsub_cmd)); | 5410 EXPECT_EQ(error::kNoError, ExecuteCmd(texsub_cmd)); |
| 5560 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 5411 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 5561 | 5412 |
| 5562 // Test CopyTexSubImage not allowed for ETC1 compressed texture | 5413 // Test CopyTexSubImage not allowed for ETC1 compressed texture |
| 5563 CopyTexSubImage2D copy_cmd; | 5414 CopyTexSubImage2D copy_cmd; |
| 5564 copy_cmd.Init(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 4, 4); | 5415 copy_cmd.Init(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 4, 4); |
| 5565 EXPECT_EQ(error::kNoError, ExecuteCmd(copy_cmd)); | 5416 EXPECT_EQ(error::kNoError, ExecuteCmd(copy_cmd)); |
| 5566 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 5417 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 5567 } | 5418 } |
| 5568 | 5419 |
| 5569 TEST_P(GLES2DecoderWithShaderTest, GetProgramInfoCHROMIUMValidArgs) { | 5420 TEST_F(GLES2DecoderWithShaderTest, GetProgramInfoCHROMIUMValidArgs) { |
| 5570 const uint32 kBucketId = 123; | 5421 const uint32 kBucketId = 123; |
| 5571 GetProgramInfoCHROMIUM cmd; | 5422 GetProgramInfoCHROMIUM cmd; |
| 5572 cmd.Init(client_program_id_, kBucketId); | 5423 cmd.Init(client_program_id_, kBucketId); |
| 5573 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5424 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5574 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 5425 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 5575 EXPECT_GT(bucket->size(), 0u); | 5426 EXPECT_GT(bucket->size(), 0u); |
| 5576 } | 5427 } |
| 5577 | 5428 |
| 5578 TEST_P(GLES2DecoderWithShaderTest, GetProgramInfoCHROMIUMInvalidArgs) { | 5429 TEST_F(GLES2DecoderWithShaderTest, GetProgramInfoCHROMIUMInvalidArgs) { |
| 5579 const uint32 kBucketId = 123; | 5430 const uint32 kBucketId = 123; |
| 5580 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); | 5431 CommonDecoder::Bucket* bucket = decoder_->GetBucket(kBucketId); |
| 5581 EXPECT_TRUE(bucket == NULL); | 5432 EXPECT_TRUE(bucket == NULL); |
| 5582 GetProgramInfoCHROMIUM cmd; | 5433 GetProgramInfoCHROMIUM cmd; |
| 5583 cmd.Init(kInvalidClientId, kBucketId); | 5434 cmd.Init(kInvalidClientId, kBucketId); |
| 5584 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5435 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5585 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5436 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5586 bucket = decoder_->GetBucket(kBucketId); | 5437 bucket = decoder_->GetBucket(kBucketId); |
| 5587 ASSERT_TRUE(bucket != NULL); | 5438 ASSERT_TRUE(bucket != NULL); |
| 5588 EXPECT_EQ(sizeof(ProgramInfoHeader), bucket->size()); | 5439 EXPECT_EQ(sizeof(ProgramInfoHeader), bucket->size()); |
| 5589 ProgramInfoHeader* info = bucket->GetDataAs<ProgramInfoHeader*>( | 5440 ProgramInfoHeader* info = bucket->GetDataAs<ProgramInfoHeader*>( |
| 5590 0, sizeof(ProgramInfoHeader)); | 5441 0, sizeof(ProgramInfoHeader)); |
| 5591 ASSERT_TRUE(info != 0); | 5442 ASSERT_TRUE(info != 0); |
| 5592 EXPECT_EQ(0u, info->link_status); | 5443 EXPECT_EQ(0u, info->link_status); |
| 5593 EXPECT_EQ(0u, info->num_attribs); | 5444 EXPECT_EQ(0u, info->num_attribs); |
| 5594 EXPECT_EQ(0u, info->num_uniforms); | 5445 EXPECT_EQ(0u, info->num_uniforms); |
| 5595 } | 5446 } |
| 5596 | 5447 |
| 5597 TEST_P(GLES2DecoderManualInitTest, EGLImageExternalBindTexture) { | 5448 TEST_F(GLES2DecoderManualInitTest, EGLImageExternalBindTexture) { |
| 5598 InitState init; | 5449 InitState init; |
| 5599 init.extensions = "GL_OES_EGL_image_external"; | 5450 init.extensions = "GL_OES_EGL_image_external"; |
| 5600 init.gl_version = "opengl es 2.0"; | 5451 init.gl_version = "opengl es 2.0"; |
| 5601 init.bind_generates_resource = true; | 5452 init.bind_generates_resource = true; |
| 5602 InitDecoder(init); | 5453 InitDecoder(init); |
| 5603 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_EXTERNAL_OES, kNewServiceId)); | 5454 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_EXTERNAL_OES, kNewServiceId)); |
| 5604 EXPECT_CALL(*gl_, GenTextures(1, _)) | 5455 EXPECT_CALL(*gl_, GenTextures(1, _)) |
| 5605 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); | 5456 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); |
| 5606 BindTexture cmd; | 5457 BindTexture cmd; |
| 5607 cmd.Init(GL_TEXTURE_EXTERNAL_OES, kNewClientId); | 5458 cmd.Init(GL_TEXTURE_EXTERNAL_OES, kNewClientId); |
| 5608 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5459 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5609 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5460 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5610 TextureRef* texture_ref = GetTexture(kNewClientId); | 5461 TextureRef* texture_ref = GetTexture(kNewClientId); |
| 5611 EXPECT_TRUE(texture_ref != NULL); | 5462 EXPECT_TRUE(texture_ref != NULL); |
| 5612 EXPECT_TRUE(texture_ref->texture()->target() == GL_TEXTURE_EXTERNAL_OES); | 5463 EXPECT_TRUE(texture_ref->texture()->target() == GL_TEXTURE_EXTERNAL_OES); |
| 5613 } | 5464 } |
| 5614 | 5465 |
| 5615 TEST_P(GLES2DecoderManualInitTest, EGLImageExternalGetBinding) { | 5466 TEST_F(GLES2DecoderManualInitTest, EGLImageExternalGetBinding) { |
| 5616 InitState init; | 5467 InitState init; |
| 5617 init.extensions = "GL_OES_EGL_image_external"; | 5468 init.extensions = "GL_OES_EGL_image_external"; |
| 5618 init.gl_version = "opengl es 2.0"; | 5469 init.gl_version = "opengl es 2.0"; |
| 5619 init.bind_generates_resource = true; | 5470 init.bind_generates_resource = true; |
| 5620 InitDecoder(init); | 5471 InitDecoder(init); |
| 5621 DoBindTexture(GL_TEXTURE_EXTERNAL_OES, client_texture_id_, kServiceTextureId); | 5472 DoBindTexture(GL_TEXTURE_EXTERNAL_OES, client_texture_id_, kServiceTextureId); |
| 5622 | 5473 |
| 5623 EXPECT_CALL(*gl_, GetError()) | 5474 EXPECT_CALL(*gl_, GetError()) |
| 5624 .WillOnce(Return(GL_NO_ERROR)) | 5475 .WillOnce(Return(GL_NO_ERROR)) |
| 5625 .WillOnce(Return(GL_NO_ERROR)) | 5476 .WillOnce(Return(GL_NO_ERROR)) |
| 5626 .RetiresOnSaturation(); | 5477 .RetiresOnSaturation(); |
| 5627 typedef GetIntegerv::Result Result; | 5478 typedef GetIntegerv::Result Result; |
| 5628 Result* result = static_cast<Result*>(shared_memory_address_); | 5479 Result* result = static_cast<Result*>(shared_memory_address_); |
| 5629 EXPECT_CALL(*gl_, GetIntegerv(GL_TEXTURE_BINDING_EXTERNAL_OES, | 5480 EXPECT_CALL(*gl_, GetIntegerv(GL_TEXTURE_BINDING_EXTERNAL_OES, |
| 5630 result->GetData())) | 5481 result->GetData())) |
| 5631 .Times(0); | 5482 .Times(0); |
| 5632 result->size = 0; | 5483 result->size = 0; |
| 5633 GetIntegerv cmd; | 5484 GetIntegerv cmd; |
| 5634 cmd.Init(GL_TEXTURE_BINDING_EXTERNAL_OES, | 5485 cmd.Init(GL_TEXTURE_BINDING_EXTERNAL_OES, |
| 5635 shared_memory_id_, | 5486 shared_memory_id_, |
| 5636 shared_memory_offset_); | 5487 shared_memory_offset_); |
| 5637 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5488 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5638 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( | 5489 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( |
| 5639 GL_TEXTURE_BINDING_EXTERNAL_OES), result->GetNumResults()); | 5490 GL_TEXTURE_BINDING_EXTERNAL_OES), result->GetNumResults()); |
| 5640 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5491 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5641 EXPECT_EQ(client_texture_id_, (uint32)result->GetData()[0]); | 5492 EXPECT_EQ(client_texture_id_, (uint32)result->GetData()[0]); |
| 5642 } | 5493 } |
| 5643 | 5494 |
| 5644 TEST_P(GLES2DecoderManualInitTest, EGLImageExternalTextureDefaults) { | 5495 TEST_F(GLES2DecoderManualInitTest, EGLImageExternalTextureDefaults) { |
| 5645 InitState init; | 5496 InitState init; |
| 5646 init.extensions = "GL_OES_EGL_image_external"; | 5497 init.extensions = "GL_OES_EGL_image_external"; |
| 5647 init.gl_version = "opengl es 2.0"; | 5498 init.gl_version = "opengl es 2.0"; |
| 5648 init.bind_generates_resource = true; | 5499 init.bind_generates_resource = true; |
| 5649 InitDecoder(init); | 5500 InitDecoder(init); |
| 5650 DoBindTexture(GL_TEXTURE_EXTERNAL_OES, client_texture_id_, kServiceTextureId); | 5501 DoBindTexture(GL_TEXTURE_EXTERNAL_OES, client_texture_id_, kServiceTextureId); |
| 5651 | 5502 |
| 5652 TextureRef* texture_ref = GetTexture(client_texture_id_); | 5503 TextureRef* texture_ref = GetTexture(client_texture_id_); |
| 5653 EXPECT_TRUE(texture_ref != NULL); | 5504 EXPECT_TRUE(texture_ref != NULL); |
| 5654 Texture* texture = texture_ref->texture(); | 5505 Texture* texture = texture_ref->texture(); |
| 5655 EXPECT_TRUE(texture->target() == GL_TEXTURE_EXTERNAL_OES); | 5506 EXPECT_TRUE(texture->target() == GL_TEXTURE_EXTERNAL_OES); |
| 5656 EXPECT_TRUE(texture->min_filter() == GL_LINEAR); | 5507 EXPECT_TRUE(texture->min_filter() == GL_LINEAR); |
| 5657 EXPECT_TRUE(texture->wrap_s() == GL_CLAMP_TO_EDGE); | 5508 EXPECT_TRUE(texture->wrap_s() == GL_CLAMP_TO_EDGE); |
| 5658 EXPECT_TRUE(texture->wrap_t() == GL_CLAMP_TO_EDGE); | 5509 EXPECT_TRUE(texture->wrap_t() == GL_CLAMP_TO_EDGE); |
| 5659 } | 5510 } |
| 5660 | 5511 |
| 5661 TEST_P(GLES2DecoderManualInitTest, EGLImageExternalTextureParam) { | 5512 TEST_F(GLES2DecoderManualInitTest, EGLImageExternalTextureParam) { |
| 5662 InitState init; | 5513 InitState init; |
| 5663 init.extensions = "GL_OES_EGL_image_external"; | 5514 init.extensions = "GL_OES_EGL_image_external"; |
| 5664 init.gl_version = "opengl es 2.0"; | 5515 init.gl_version = "opengl es 2.0"; |
| 5665 init.bind_generates_resource = true; | 5516 init.bind_generates_resource = true; |
| 5666 InitDecoder(init); | 5517 InitDecoder(init); |
| 5667 DoBindTexture(GL_TEXTURE_EXTERNAL_OES, client_texture_id_, kServiceTextureId); | 5518 DoBindTexture(GL_TEXTURE_EXTERNAL_OES, client_texture_id_, kServiceTextureId); |
| 5668 | 5519 |
| 5669 EXPECT_CALL(*gl_, TexParameteri(GL_TEXTURE_EXTERNAL_OES, | 5520 EXPECT_CALL(*gl_, TexParameteri(GL_TEXTURE_EXTERNAL_OES, |
| 5670 GL_TEXTURE_MIN_FILTER, | 5521 GL_TEXTURE_MIN_FILTER, |
| 5671 GL_NEAREST)); | 5522 GL_NEAREST)); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5705 | 5556 |
| 5706 TextureRef* texture_ref = GetTexture(client_texture_id_); | 5557 TextureRef* texture_ref = GetTexture(client_texture_id_); |
| 5707 EXPECT_TRUE(texture_ref != NULL); | 5558 EXPECT_TRUE(texture_ref != NULL); |
| 5708 Texture* texture = texture_ref->texture(); | 5559 Texture* texture = texture_ref->texture(); |
| 5709 EXPECT_TRUE(texture->target() == GL_TEXTURE_EXTERNAL_OES); | 5560 EXPECT_TRUE(texture->target() == GL_TEXTURE_EXTERNAL_OES); |
| 5710 EXPECT_TRUE(texture->min_filter() == GL_LINEAR); | 5561 EXPECT_TRUE(texture->min_filter() == GL_LINEAR); |
| 5711 EXPECT_TRUE(texture->wrap_s() == GL_CLAMP_TO_EDGE); | 5562 EXPECT_TRUE(texture->wrap_s() == GL_CLAMP_TO_EDGE); |
| 5712 EXPECT_TRUE(texture->wrap_t() == GL_CLAMP_TO_EDGE); | 5563 EXPECT_TRUE(texture->wrap_t() == GL_CLAMP_TO_EDGE); |
| 5713 } | 5564 } |
| 5714 | 5565 |
| 5715 TEST_P(GLES2DecoderManualInitTest, EGLImageExternalTextureParamInvalid) { | 5566 TEST_F(GLES2DecoderManualInitTest, EGLImageExternalTextureParamInvalid) { |
| 5716 InitState init; | 5567 InitState init; |
| 5717 init.extensions = "GL_OES_EGL_image_external"; | 5568 init.extensions = "GL_OES_EGL_image_external"; |
| 5718 init.gl_version = "opengl es 2.0"; | 5569 init.gl_version = "opengl es 2.0"; |
| 5719 init.bind_generates_resource = true; | 5570 init.bind_generates_resource = true; |
| 5720 InitDecoder(init); | 5571 InitDecoder(init); |
| 5721 DoBindTexture(GL_TEXTURE_EXTERNAL_OES, client_texture_id_, kServiceTextureId); | 5572 DoBindTexture(GL_TEXTURE_EXTERNAL_OES, client_texture_id_, kServiceTextureId); |
| 5722 | 5573 |
| 5723 TexParameteri cmd; | 5574 TexParameteri cmd; |
| 5724 cmd.Init(GL_TEXTURE_EXTERNAL_OES, | 5575 cmd.Init(GL_TEXTURE_EXTERNAL_OES, |
| 5725 GL_TEXTURE_MIN_FILTER, | 5576 GL_TEXTURE_MIN_FILTER, |
| (...skipping 15 matching lines...) Expand all Loading... |
| 5741 | 5592 |
| 5742 TextureRef* texture_ref = GetTexture(client_texture_id_); | 5593 TextureRef* texture_ref = GetTexture(client_texture_id_); |
| 5743 EXPECT_TRUE(texture_ref != NULL); | 5594 EXPECT_TRUE(texture_ref != NULL); |
| 5744 Texture* texture = texture_ref->texture(); | 5595 Texture* texture = texture_ref->texture(); |
| 5745 EXPECT_TRUE(texture->target() == GL_TEXTURE_EXTERNAL_OES); | 5596 EXPECT_TRUE(texture->target() == GL_TEXTURE_EXTERNAL_OES); |
| 5746 EXPECT_TRUE(texture->min_filter() == GL_LINEAR); | 5597 EXPECT_TRUE(texture->min_filter() == GL_LINEAR); |
| 5747 EXPECT_TRUE(texture->wrap_s() == GL_CLAMP_TO_EDGE); | 5598 EXPECT_TRUE(texture->wrap_s() == GL_CLAMP_TO_EDGE); |
| 5748 EXPECT_TRUE(texture->wrap_t() == GL_CLAMP_TO_EDGE); | 5599 EXPECT_TRUE(texture->wrap_t() == GL_CLAMP_TO_EDGE); |
| 5749 } | 5600 } |
| 5750 | 5601 |
| 5751 TEST_P(GLES2DecoderManualInitTest, EGLImageExternalTexImage2DError) { | 5602 TEST_F(GLES2DecoderManualInitTest, EGLImageExternalTexImage2DError) { |
| 5752 InitState init; | 5603 InitState init; |
| 5753 init.extensions = "GL_OES_EGL_image_external"; | 5604 init.extensions = "GL_OES_EGL_image_external"; |
| 5754 init.gl_version = "opengl es 2.0"; | 5605 init.gl_version = "opengl es 2.0"; |
| 5755 init.bind_generates_resource = true; | 5606 init.bind_generates_resource = true; |
| 5756 InitDecoder(init); | 5607 InitDecoder(init); |
| 5757 | 5608 |
| 5758 GLenum target = GL_TEXTURE_EXTERNAL_OES; | 5609 GLenum target = GL_TEXTURE_EXTERNAL_OES; |
| 5759 GLint level = 0; | 5610 GLint level = 0; |
| 5760 GLenum internal_format = GL_RGBA; | 5611 GLenum internal_format = GL_RGBA; |
| 5761 GLsizei width = 2; | 5612 GLsizei width = 2; |
| 5762 GLsizei height = 4; | 5613 GLsizei height = 4; |
| 5763 GLint border = 0; | 5614 GLint border = 0; |
| 5764 GLenum format = GL_RGBA; | 5615 GLenum format = GL_RGBA; |
| 5765 GLenum type = GL_UNSIGNED_BYTE; | 5616 GLenum type = GL_UNSIGNED_BYTE; |
| 5766 DoBindTexture(GL_TEXTURE_EXTERNAL_OES, client_texture_id_, kServiceTextureId); | 5617 DoBindTexture(GL_TEXTURE_EXTERNAL_OES, client_texture_id_, kServiceTextureId); |
| 5767 ASSERT_TRUE(GetTexture(client_texture_id_) != NULL); | 5618 ASSERT_TRUE(GetTexture(client_texture_id_) != NULL); |
| 5768 TexImage2D cmd; | 5619 TexImage2D cmd; |
| 5769 cmd.Init(target, level, internal_format, width, height, border, format, | 5620 cmd.Init(target, level, internal_format, width, height, border, format, |
| 5770 type, kSharedMemoryId, kSharedMemoryOffset); | 5621 type, kSharedMemoryId, kSharedMemoryOffset); |
| 5771 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5622 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 5772 | 5623 |
| 5773 // TexImage2D is not allowed with GL_TEXTURE_EXTERNAL_OES targets. | 5624 // TexImage2D is not allowed with GL_TEXTURE_EXTERNAL_OES targets. |
| 5774 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 5625 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 5775 } | 5626 } |
| 5776 | 5627 |
| 5777 TEST_P(GLES2DecoderManualInitTest, BindGeneratesResourceFalse) { | 5628 TEST_F(GLES2DecoderManualInitTest, BindGeneratesResourceFalse) { |
| 5778 InitState init; | 5629 InitState init; |
| 5779 init.gl_version = "3.0"; | 5630 init.gl_version = "3.0"; |
| 5780 InitDecoder(init); | 5631 InitDecoder(init); |
| 5781 | 5632 |
| 5782 BindTexture cmd1; | 5633 BindTexture cmd1; |
| 5783 cmd1.Init(GL_TEXTURE_2D, kInvalidClientId); | 5634 cmd1.Init(GL_TEXTURE_2D, kInvalidClientId); |
| 5784 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); | 5635 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); |
| 5785 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 5636 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 5786 | 5637 |
| 5787 BindBuffer cmd2; | 5638 BindBuffer cmd2; |
| 5788 cmd2.Init(GL_ARRAY_BUFFER, kInvalidClientId); | 5639 cmd2.Init(GL_ARRAY_BUFFER, kInvalidClientId); |
| 5789 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 5640 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 5790 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 5641 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 5791 | 5642 |
| 5792 BindFramebuffer cmd3; | 5643 BindFramebuffer cmd3; |
| 5793 cmd3.Init(GL_FRAMEBUFFER, kInvalidClientId); | 5644 cmd3.Init(GL_FRAMEBUFFER, kInvalidClientId); |
| 5794 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd3)); | 5645 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd3)); |
| 5795 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 5646 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 5796 | 5647 |
| 5797 BindRenderbuffer cmd4; | 5648 BindRenderbuffer cmd4; |
| 5798 cmd4.Init(GL_RENDERBUFFER, kInvalidClientId); | 5649 cmd4.Init(GL_RENDERBUFFER, kInvalidClientId); |
| 5799 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd4)); | 5650 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd4)); |
| 5800 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 5651 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 5801 } | 5652 } |
| 5802 | 5653 |
| 5803 TEST_P(GLES2DecoderManualInitTest, DefaultTextureZero) { | 5654 TEST_F(GLES2DecoderManualInitTest, DefaultTextureZero) { |
| 5804 InitState init; | 5655 InitState init; |
| 5805 init.gl_version = "3.0"; | 5656 init.gl_version = "3.0"; |
| 5806 InitDecoder(init); | 5657 InitDecoder(init); |
| 5807 | 5658 |
| 5808 BindTexture cmd1; | 5659 BindTexture cmd1; |
| 5809 cmd1.Init(GL_TEXTURE_2D, 0); | 5660 cmd1.Init(GL_TEXTURE_2D, 0); |
| 5810 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); | 5661 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); |
| 5811 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); | 5662 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); |
| 5812 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5663 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5813 | 5664 |
| 5814 BindTexture cmd2; | 5665 BindTexture cmd2; |
| 5815 cmd2.Init(GL_TEXTURE_CUBE_MAP, 0); | 5666 cmd2.Init(GL_TEXTURE_CUBE_MAP, 0); |
| 5816 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_CUBE_MAP, 0)); | 5667 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_CUBE_MAP, 0)); |
| 5817 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 5668 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 5818 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5669 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5819 } | 5670 } |
| 5820 | 5671 |
| 5821 TEST_P(GLES2DecoderManualInitTest, DefaultTextureBGR) { | 5672 TEST_F(GLES2DecoderManualInitTest, DefaultTextureBGR) { |
| 5822 InitState init; | 5673 InitState init; |
| 5823 init.gl_version = "3.0"; | 5674 init.gl_version = "3.0"; |
| 5824 init.bind_generates_resource = true; | 5675 init.bind_generates_resource = true; |
| 5825 InitDecoder(init); | 5676 InitDecoder(init); |
| 5826 | 5677 |
| 5827 BindTexture cmd1; | 5678 BindTexture cmd1; |
| 5828 cmd1.Init(GL_TEXTURE_2D, 0); | 5679 cmd1.Init(GL_TEXTURE_2D, 0); |
| 5829 EXPECT_CALL( | 5680 EXPECT_CALL( |
| 5830 *gl_, BindTexture(GL_TEXTURE_2D, TestHelper::kServiceDefaultTexture2dId)); | 5681 *gl_, BindTexture(GL_TEXTURE_2D, TestHelper::kServiceDefaultTexture2dId)); |
| 5831 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); | 5682 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); |
| 5832 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5683 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5833 | 5684 |
| 5834 BindTexture cmd2; | 5685 BindTexture cmd2; |
| 5835 cmd2.Init(GL_TEXTURE_CUBE_MAP, 0); | 5686 cmd2.Init(GL_TEXTURE_CUBE_MAP, 0); |
| 5836 EXPECT_CALL(*gl_, | 5687 EXPECT_CALL(*gl_, |
| 5837 BindTexture(GL_TEXTURE_CUBE_MAP, | 5688 BindTexture(GL_TEXTURE_CUBE_MAP, |
| 5838 TestHelper::kServiceDefaultTextureCubemapId)); | 5689 TestHelper::kServiceDefaultTextureCubemapId)); |
| 5839 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 5690 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 5840 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5691 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5841 } | 5692 } |
| 5842 | 5693 |
| 5843 // Test that default texture 0 is immutable. | 5694 // Test that default texture 0 is immutable. |
| 5844 TEST_P(GLES2DecoderManualInitTest, NoDefaultTexParameterf) { | 5695 TEST_F(GLES2DecoderManualInitTest, NoDefaultTexParameterf) { |
| 5845 InitState init; | 5696 InitState init; |
| 5846 init.gl_version = "3.0"; | 5697 init.gl_version = "3.0"; |
| 5847 InitDecoder(init); | 5698 InitDecoder(init); |
| 5848 | 5699 |
| 5849 { | 5700 { |
| 5850 BindTexture cmd1; | 5701 BindTexture cmd1; |
| 5851 cmd1.Init(GL_TEXTURE_2D, 0); | 5702 cmd1.Init(GL_TEXTURE_2D, 0); |
| 5852 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); | 5703 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); |
| 5853 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); | 5704 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); |
| 5854 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5705 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 5866 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); | 5717 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); |
| 5867 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5718 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5868 | 5719 |
| 5869 TexParameterf cmd2; | 5720 TexParameterf cmd2; |
| 5870 cmd2.Init(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_NEAREST); | 5721 cmd2.Init(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
| 5871 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 5722 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 5872 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 5723 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 5873 } | 5724 } |
| 5874 } | 5725 } |
| 5875 | 5726 |
| 5876 TEST_P(GLES2DecoderManualInitTest, NoDefaultTexParameteri) { | 5727 TEST_F(GLES2DecoderManualInitTest, NoDefaultTexParameteri) { |
| 5877 InitState init; | 5728 InitState init; |
| 5878 init.gl_version = "3.0"; | 5729 init.gl_version = "3.0"; |
| 5879 InitDecoder(init); | 5730 InitDecoder(init); |
| 5880 | 5731 |
| 5881 { | 5732 { |
| 5882 BindTexture cmd1; | 5733 BindTexture cmd1; |
| 5883 cmd1.Init(GL_TEXTURE_2D, 0); | 5734 cmd1.Init(GL_TEXTURE_2D, 0); |
| 5884 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); | 5735 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); |
| 5885 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); | 5736 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); |
| 5886 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5737 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 5898 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); | 5749 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); |
| 5899 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5750 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5900 | 5751 |
| 5901 TexParameteri cmd2; | 5752 TexParameteri cmd2; |
| 5902 cmd2.Init(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_NEAREST); | 5753 cmd2.Init(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
| 5903 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 5754 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 5904 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 5755 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 5905 } | 5756 } |
| 5906 } | 5757 } |
| 5907 | 5758 |
| 5908 TEST_P(GLES2DecoderManualInitTest, NoDefaultTexParameterfv) { | 5759 TEST_F(GLES2DecoderManualInitTest, NoDefaultTexParameterfv) { |
| 5909 InitState init; | 5760 InitState init; |
| 5910 init.gl_version = "3.0"; | 5761 init.gl_version = "3.0"; |
| 5911 InitDecoder(init); | 5762 InitDecoder(init); |
| 5912 | 5763 |
| 5913 { | 5764 { |
| 5914 BindTexture cmd1; | 5765 BindTexture cmd1; |
| 5915 cmd1.Init(GL_TEXTURE_2D, 0); | 5766 cmd1.Init(GL_TEXTURE_2D, 0); |
| 5916 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); | 5767 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); |
| 5917 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); | 5768 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); |
| 5918 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5769 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 5938 cmd2.Init(GL_TEXTURE_CUBE_MAP, | 5789 cmd2.Init(GL_TEXTURE_CUBE_MAP, |
| 5939 GL_TEXTURE_MAG_FILTER, | 5790 GL_TEXTURE_MAG_FILTER, |
| 5940 shared_memory_id_, | 5791 shared_memory_id_, |
| 5941 shared_memory_offset_); | 5792 shared_memory_offset_); |
| 5942 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST; | 5793 GetSharedMemoryAs<GLfloat*>()[0] = GL_NEAREST; |
| 5943 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 5794 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 5944 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 5795 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 5945 } | 5796 } |
| 5946 } | 5797 } |
| 5947 | 5798 |
| 5948 TEST_P(GLES2DecoderManualInitTest, NoDefaultTexParameteriv) { | 5799 TEST_F(GLES2DecoderManualInitTest, NoDefaultTexParameteriv) { |
| 5949 InitState init; | 5800 InitState init; |
| 5950 init.gl_version = "3.0"; | 5801 init.gl_version = "3.0"; |
| 5951 InitDecoder(init); | 5802 InitDecoder(init); |
| 5952 | 5803 |
| 5953 { | 5804 { |
| 5954 BindTexture cmd1; | 5805 BindTexture cmd1; |
| 5955 cmd1.Init(GL_TEXTURE_2D, 0); | 5806 cmd1.Init(GL_TEXTURE_2D, 0); |
| 5956 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); | 5807 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); |
| 5957 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); | 5808 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); |
| 5958 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5809 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 5978 cmd2.Init(GL_TEXTURE_CUBE_MAP, | 5829 cmd2.Init(GL_TEXTURE_CUBE_MAP, |
| 5979 GL_TEXTURE_MAG_FILTER, | 5830 GL_TEXTURE_MAG_FILTER, |
| 5980 shared_memory_id_, | 5831 shared_memory_id_, |
| 5981 shared_memory_offset_); | 5832 shared_memory_offset_); |
| 5982 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST; | 5833 GetSharedMemoryAs<GLint*>()[0] = GL_NEAREST; |
| 5983 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 5834 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 5984 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 5835 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| 5985 } | 5836 } |
| 5986 } | 5837 } |
| 5987 | 5838 |
| 5988 TEST_P(GLES2DecoderManualInitTest, NoDefaultTexImage2D) { | 5839 TEST_F(GLES2DecoderManualInitTest, NoDefaultTexImage2D) { |
| 5989 InitState init; | 5840 InitState init; |
| 5990 init.gl_version = "3.0"; | 5841 init.gl_version = "3.0"; |
| 5991 InitDecoder(init); | 5842 InitDecoder(init); |
| 5992 | 5843 |
| 5993 BindTexture cmd1; | 5844 BindTexture cmd1; |
| 5994 cmd1.Init(GL_TEXTURE_2D, 0); | 5845 cmd1.Init(GL_TEXTURE_2D, 0); |
| 5995 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); | 5846 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); |
| 5996 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); | 5847 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); |
| 5997 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5848 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 5998 | 5849 |
| 5999 TexImage2D cmd2; | 5850 TexImage2D cmd2; |
| 6000 cmd2.Init(GL_TEXTURE_2D, | 5851 cmd2.Init(GL_TEXTURE_2D, |
| 6001 0, | 5852 0, |
| 6002 GL_RGBA, | 5853 GL_RGBA, |
| 6003 2, | 5854 2, |
| 6004 2, | 5855 2, |
| 6005 0, | 5856 0, |
| 6006 GL_RGBA, | 5857 GL_RGBA, |
| 6007 GL_UNSIGNED_BYTE, | 5858 GL_UNSIGNED_BYTE, |
| 6008 kSharedMemoryId, | 5859 kSharedMemoryId, |
| 6009 kSharedMemoryOffset); | 5860 kSharedMemoryOffset); |
| 6010 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 5861 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 6011 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 5862 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 6012 } | 5863 } |
| 6013 | 5864 |
| 6014 TEST_P(GLES2DecoderManualInitTest, NoDefaultTexSubImage2D) { | 5865 TEST_F(GLES2DecoderManualInitTest, NoDefaultTexSubImage2D) { |
| 6015 InitState init; | 5866 InitState init; |
| 6016 init.gl_version = "3.0"; | 5867 init.gl_version = "3.0"; |
| 6017 InitDecoder(init); | 5868 InitDecoder(init); |
| 6018 | 5869 |
| 6019 BindTexture cmd1; | 5870 BindTexture cmd1; |
| 6020 cmd1.Init(GL_TEXTURE_2D, 0); | 5871 cmd1.Init(GL_TEXTURE_2D, 0); |
| 6021 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); | 5872 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, 0)); |
| 6022 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); | 5873 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); |
| 6023 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5874 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 6024 | 5875 |
| 6025 TexSubImage2D cmd2; | 5876 TexSubImage2D cmd2; |
| 6026 cmd2.Init(GL_TEXTURE_2D, | 5877 cmd2.Init(GL_TEXTURE_2D, |
| 6027 0, | 5878 0, |
| 6028 1, | 5879 1, |
| 6029 1, | 5880 1, |
| 6030 1, | 5881 1, |
| 6031 1, | 5882 1, |
| 6032 GL_RGBA, | 5883 GL_RGBA, |
| 6033 GL_UNSIGNED_BYTE, | 5884 GL_UNSIGNED_BYTE, |
| 6034 kSharedMemoryId, | 5885 kSharedMemoryId, |
| 6035 kSharedMemoryOffset, | 5886 kSharedMemoryOffset, |
| 6036 GL_FALSE); | 5887 GL_FALSE); |
| 6037 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); | 5888 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); |
| 6038 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 5889 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 6039 } | 5890 } |
| 6040 | 5891 |
| 6041 TEST_P(GLES2DecoderManualInitTest, ARBTextureRectangleBindTexture) { | 5892 TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleBindTexture) { |
| 6042 InitState init; | 5893 InitState init; |
| 6043 init.extensions = "GL_ARB_texture_rectangle"; | 5894 init.extensions = "GL_ARB_texture_rectangle"; |
| 6044 init.gl_version = "3.0"; | 5895 init.gl_version = "3.0"; |
| 6045 init.bind_generates_resource = true; | 5896 init.bind_generates_resource = true; |
| 6046 InitDecoder(init); | 5897 InitDecoder(init); |
| 6047 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_RECTANGLE_ARB, kNewServiceId)); | 5898 EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_RECTANGLE_ARB, kNewServiceId)); |
| 6048 EXPECT_CALL(*gl_, GenTextures(1, _)) | 5899 EXPECT_CALL(*gl_, GenTextures(1, _)) |
| 6049 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); | 5900 .WillOnce(SetArgumentPointee<1>(kNewServiceId)); |
| 6050 BindTexture cmd; | 5901 BindTexture cmd; |
| 6051 cmd.Init(GL_TEXTURE_RECTANGLE_ARB, kNewClientId); | 5902 cmd.Init(GL_TEXTURE_RECTANGLE_ARB, kNewClientId); |
| 6052 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5903 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6053 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5904 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 6054 Texture* texture = GetTexture(kNewClientId)->texture(); | 5905 Texture* texture = GetTexture(kNewClientId)->texture(); |
| 6055 EXPECT_TRUE(texture != NULL); | 5906 EXPECT_TRUE(texture != NULL); |
| 6056 EXPECT_TRUE(texture->target() == GL_TEXTURE_RECTANGLE_ARB); | 5907 EXPECT_TRUE(texture->target() == GL_TEXTURE_RECTANGLE_ARB); |
| 6057 } | 5908 } |
| 6058 | 5909 |
| 6059 TEST_P(GLES2DecoderManualInitTest, ARBTextureRectangleGetBinding) { | 5910 TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleGetBinding) { |
| 6060 InitState init; | 5911 InitState init; |
| 6061 init.extensions = "GL_ARB_texture_rectangle"; | 5912 init.extensions = "GL_ARB_texture_rectangle"; |
| 6062 init.gl_version = "3.0"; | 5913 init.gl_version = "3.0"; |
| 6063 init.bind_generates_resource = true; | 5914 init.bind_generates_resource = true; |
| 6064 InitDecoder(init); | 5915 InitDecoder(init); |
| 6065 DoBindTexture( | 5916 DoBindTexture( |
| 6066 GL_TEXTURE_RECTANGLE_ARB, client_texture_id_, kServiceTextureId); | 5917 GL_TEXTURE_RECTANGLE_ARB, client_texture_id_, kServiceTextureId); |
| 6067 | 5918 |
| 6068 EXPECT_CALL(*gl_, GetError()) | 5919 EXPECT_CALL(*gl_, GetError()) |
| 6069 .WillOnce(Return(GL_NO_ERROR)) | 5920 .WillOnce(Return(GL_NO_ERROR)) |
| 6070 .WillOnce(Return(GL_NO_ERROR)) | 5921 .WillOnce(Return(GL_NO_ERROR)) |
| 6071 .RetiresOnSaturation(); | 5922 .RetiresOnSaturation(); |
| 6072 typedef GetIntegerv::Result Result; | 5923 typedef GetIntegerv::Result Result; |
| 6073 Result* result = static_cast<Result*>(shared_memory_address_); | 5924 Result* result = static_cast<Result*>(shared_memory_address_); |
| 6074 EXPECT_CALL(*gl_, GetIntegerv(GL_TEXTURE_BINDING_RECTANGLE_ARB, | 5925 EXPECT_CALL(*gl_, GetIntegerv(GL_TEXTURE_BINDING_RECTANGLE_ARB, |
| 6075 result->GetData())) | 5926 result->GetData())) |
| 6076 .Times(0); | 5927 .Times(0); |
| 6077 result->size = 0; | 5928 result->size = 0; |
| 6078 GetIntegerv cmd; | 5929 GetIntegerv cmd; |
| 6079 cmd.Init(GL_TEXTURE_BINDING_RECTANGLE_ARB, | 5930 cmd.Init(GL_TEXTURE_BINDING_RECTANGLE_ARB, |
| 6080 shared_memory_id_, | 5931 shared_memory_id_, |
| 6081 shared_memory_offset_); | 5932 shared_memory_offset_); |
| 6082 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 5933 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6083 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( | 5934 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned( |
| 6084 GL_TEXTURE_BINDING_RECTANGLE_ARB), result->GetNumResults()); | 5935 GL_TEXTURE_BINDING_RECTANGLE_ARB), result->GetNumResults()); |
| 6085 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 5936 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 6086 EXPECT_EQ(client_texture_id_, (uint32)result->GetData()[0]); | 5937 EXPECT_EQ(client_texture_id_, (uint32)result->GetData()[0]); |
| 6087 } | 5938 } |
| 6088 | 5939 |
| 6089 TEST_P(GLES2DecoderManualInitTest, ARBTextureRectangleTextureDefaults) { | 5940 TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleTextureDefaults) { |
| 6090 InitState init; | 5941 InitState init; |
| 6091 init.extensions = "GL_ARB_texture_rectangle"; | 5942 init.extensions = "GL_ARB_texture_rectangle"; |
| 6092 init.gl_version = "3.0"; | 5943 init.gl_version = "3.0"; |
| 6093 init.bind_generates_resource = true; | 5944 init.bind_generates_resource = true; |
| 6094 InitDecoder(init); | 5945 InitDecoder(init); |
| 6095 DoBindTexture( | 5946 DoBindTexture( |
| 6096 GL_TEXTURE_RECTANGLE_ARB, client_texture_id_, kServiceTextureId); | 5947 GL_TEXTURE_RECTANGLE_ARB, client_texture_id_, kServiceTextureId); |
| 6097 | 5948 |
| 6098 Texture* texture = GetTexture(client_texture_id_)->texture(); | 5949 Texture* texture = GetTexture(client_texture_id_)->texture(); |
| 6099 EXPECT_TRUE(texture != NULL); | 5950 EXPECT_TRUE(texture != NULL); |
| 6100 EXPECT_TRUE(texture->target() == GL_TEXTURE_RECTANGLE_ARB); | 5951 EXPECT_TRUE(texture->target() == GL_TEXTURE_RECTANGLE_ARB); |
| 6101 EXPECT_TRUE(texture->min_filter() == GL_LINEAR); | 5952 EXPECT_TRUE(texture->min_filter() == GL_LINEAR); |
| 6102 EXPECT_TRUE(texture->wrap_s() == GL_CLAMP_TO_EDGE); | 5953 EXPECT_TRUE(texture->wrap_s() == GL_CLAMP_TO_EDGE); |
| 6103 EXPECT_TRUE(texture->wrap_t() == GL_CLAMP_TO_EDGE); | 5954 EXPECT_TRUE(texture->wrap_t() == GL_CLAMP_TO_EDGE); |
| 6104 } | 5955 } |
| 6105 | 5956 |
| 6106 TEST_P(GLES2DecoderManualInitTest, ARBTextureRectangleTextureParam) { | 5957 TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleTextureParam) { |
| 6107 InitState init; | 5958 InitState init; |
| 6108 init.extensions = "GL_ARB_texture_rectangle"; | 5959 init.extensions = "GL_ARB_texture_rectangle"; |
| 6109 init.gl_version = "3.0"; | 5960 init.gl_version = "3.0"; |
| 6110 init.bind_generates_resource = true; | 5961 init.bind_generates_resource = true; |
| 6111 InitDecoder(init); | 5962 InitDecoder(init); |
| 6112 | 5963 |
| 6113 DoBindTexture( | 5964 DoBindTexture( |
| 6114 GL_TEXTURE_RECTANGLE_ARB, client_texture_id_, kServiceTextureId); | 5965 GL_TEXTURE_RECTANGLE_ARB, client_texture_id_, kServiceTextureId); |
| 6115 | 5966 |
| 6116 EXPECT_CALL(*gl_, TexParameteri(GL_TEXTURE_RECTANGLE_ARB, | 5967 EXPECT_CALL(*gl_, TexParameteri(GL_TEXTURE_RECTANGLE_ARB, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6151 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6002 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 6152 | 6003 |
| 6153 Texture* texture = GetTexture(client_texture_id_)->texture(); | 6004 Texture* texture = GetTexture(client_texture_id_)->texture(); |
| 6154 EXPECT_TRUE(texture != NULL); | 6005 EXPECT_TRUE(texture != NULL); |
| 6155 EXPECT_TRUE(texture->target() == GL_TEXTURE_RECTANGLE_ARB); | 6006 EXPECT_TRUE(texture->target() == GL_TEXTURE_RECTANGLE_ARB); |
| 6156 EXPECT_TRUE(texture->min_filter() == GL_LINEAR); | 6007 EXPECT_TRUE(texture->min_filter() == GL_LINEAR); |
| 6157 EXPECT_TRUE(texture->wrap_s() == GL_CLAMP_TO_EDGE); | 6008 EXPECT_TRUE(texture->wrap_s() == GL_CLAMP_TO_EDGE); |
| 6158 EXPECT_TRUE(texture->wrap_t() == GL_CLAMP_TO_EDGE); | 6009 EXPECT_TRUE(texture->wrap_t() == GL_CLAMP_TO_EDGE); |
| 6159 } | 6010 } |
| 6160 | 6011 |
| 6161 TEST_P(GLES2DecoderManualInitTest, ARBTextureRectangleTextureParamInvalid) { | 6012 TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleTextureParamInvalid) { |
| 6162 InitState init; | 6013 InitState init; |
| 6163 init.extensions = "GL_ARB_texture_rectangle"; | 6014 init.extensions = "GL_ARB_texture_rectangle"; |
| 6164 init.gl_version = "3.0"; | 6015 init.gl_version = "3.0"; |
| 6165 init.bind_generates_resource = true; | 6016 init.bind_generates_resource = true; |
| 6166 InitDecoder(init); | 6017 InitDecoder(init); |
| 6167 | 6018 |
| 6168 DoBindTexture( | 6019 DoBindTexture( |
| 6169 GL_TEXTURE_RECTANGLE_ARB, client_texture_id_, kServiceTextureId); | 6020 GL_TEXTURE_RECTANGLE_ARB, client_texture_id_, kServiceTextureId); |
| 6170 | 6021 |
| 6171 TexParameteri cmd; | 6022 TexParameteri cmd; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 6188 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 6039 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 6189 | 6040 |
| 6190 Texture* texture = GetTexture(client_texture_id_)->texture(); | 6041 Texture* texture = GetTexture(client_texture_id_)->texture(); |
| 6191 EXPECT_TRUE(texture != NULL); | 6042 EXPECT_TRUE(texture != NULL); |
| 6192 EXPECT_TRUE(texture->target() == GL_TEXTURE_RECTANGLE_ARB); | 6043 EXPECT_TRUE(texture->target() == GL_TEXTURE_RECTANGLE_ARB); |
| 6193 EXPECT_TRUE(texture->min_filter() == GL_LINEAR); | 6044 EXPECT_TRUE(texture->min_filter() == GL_LINEAR); |
| 6194 EXPECT_TRUE(texture->wrap_s() == GL_CLAMP_TO_EDGE); | 6045 EXPECT_TRUE(texture->wrap_s() == GL_CLAMP_TO_EDGE); |
| 6195 EXPECT_TRUE(texture->wrap_t() == GL_CLAMP_TO_EDGE); | 6046 EXPECT_TRUE(texture->wrap_t() == GL_CLAMP_TO_EDGE); |
| 6196 } | 6047 } |
| 6197 | 6048 |
| 6198 TEST_P(GLES2DecoderManualInitTest, ARBTextureRectangleTexImage2DError) { | 6049 TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleTexImage2DError) { |
| 6199 InitState init; | 6050 InitState init; |
| 6200 init.extensions = "GL_ARB_texture_rectangle"; | 6051 init.extensions = "GL_ARB_texture_rectangle"; |
| 6201 init.gl_version = "3.0"; | 6052 init.gl_version = "3.0"; |
| 6202 init.bind_generates_resource = true; | 6053 init.bind_generates_resource = true; |
| 6203 InitDecoder(init); | 6054 InitDecoder(init); |
| 6204 | 6055 |
| 6205 GLenum target = GL_TEXTURE_RECTANGLE_ARB; | 6056 GLenum target = GL_TEXTURE_RECTANGLE_ARB; |
| 6206 GLint level = 0; | 6057 GLint level = 0; |
| 6207 GLenum internal_format = GL_RGBA; | 6058 GLenum internal_format = GL_RGBA; |
| 6208 GLsizei width = 2; | 6059 GLsizei width = 2; |
| 6209 GLsizei height = 4; | 6060 GLsizei height = 4; |
| 6210 GLint border = 0; | 6061 GLint border = 0; |
| 6211 GLenum format = GL_RGBA; | 6062 GLenum format = GL_RGBA; |
| 6212 GLenum type = GL_UNSIGNED_BYTE; | 6063 GLenum type = GL_UNSIGNED_BYTE; |
| 6213 DoBindTexture( | 6064 DoBindTexture( |
| 6214 GL_TEXTURE_RECTANGLE_ARB, client_texture_id_, kServiceTextureId); | 6065 GL_TEXTURE_RECTANGLE_ARB, client_texture_id_, kServiceTextureId); |
| 6215 ASSERT_TRUE(GetTexture(client_texture_id_) != NULL); | 6066 ASSERT_TRUE(GetTexture(client_texture_id_) != NULL); |
| 6216 TexImage2D cmd; | 6067 TexImage2D cmd; |
| 6217 cmd.Init(target, level, internal_format, width, height, border, format, | 6068 cmd.Init(target, level, internal_format, width, height, border, format, |
| 6218 type, kSharedMemoryId, kSharedMemoryOffset); | 6069 type, kSharedMemoryId, kSharedMemoryOffset); |
| 6219 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6070 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6220 | 6071 |
| 6221 // TexImage2D is not allowed with GL_TEXTURE_RECTANGLE_ARB targets. | 6072 // TexImage2D is not allowed with GL_TEXTURE_RECTANGLE_ARB targets. |
| 6222 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 6073 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 6223 } | 6074 } |
| 6224 | 6075 |
| 6225 TEST_P(GLES2DecoderTest, EnableFeatureCHROMIUMBadBucket) { | 6076 TEST_F(GLES2DecoderTest, EnableFeatureCHROMIUMBadBucket) { |
| 6226 const uint32 kBadBucketId = 123; | 6077 const uint32 kBadBucketId = 123; |
| 6227 EnableFeatureCHROMIUM cmd; | 6078 EnableFeatureCHROMIUM cmd; |
| 6228 cmd.Init(kBadBucketId, shared_memory_id_, shared_memory_offset_); | 6079 cmd.Init(kBadBucketId, shared_memory_id_, shared_memory_offset_); |
| 6229 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 6080 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 6230 } | 6081 } |
| 6231 | 6082 |
| 6232 TEST_P(GLES2DecoderTest, RequestExtensionCHROMIUMBadBucket) { | 6083 TEST_F(GLES2DecoderTest, RequestExtensionCHROMIUMBadBucket) { |
| 6233 const uint32 kBadBucketId = 123; | 6084 const uint32 kBadBucketId = 123; |
| 6234 RequestExtensionCHROMIUM cmd; | 6085 RequestExtensionCHROMIUM cmd; |
| 6235 cmd.Init(kBadBucketId); | 6086 cmd.Init(kBadBucketId); |
| 6236 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 6087 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
| 6237 } | 6088 } |
| 6238 | 6089 |
| 6239 TEST_P(GLES2DecoderManualInitTest, TexSubImage2DClearsAfterTexImage2DNULL) { | 6090 TEST_F(GLES2DecoderTest, TexSubImage2DClearsAfterTexImage2DNULL) { |
| 6240 InitState init; | |
| 6241 init.gl_version = "opengl es 2.0"; | |
| 6242 init.has_alpha = true; | |
| 6243 init.has_depth = true; | |
| 6244 init.request_alpha = true; | |
| 6245 init.request_depth = true; | |
| 6246 InitDecoder(init); | |
| 6247 | |
| 6248 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 6091 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 6249 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 6092 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6250 0, 0); | 6093 0, 0); |
| 6251 SetupClearTextureExpectations( | 6094 SetupClearTextureExpectations( |
| 6252 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, | 6095 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
| 6253 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); | 6096 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); |
| 6254 EXPECT_CALL(*gl_, TexSubImage2D( | 6097 EXPECT_CALL(*gl_, TexSubImage2D( |
| 6255 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6098 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6256 shared_memory_address_)) | 6099 shared_memory_address_)) |
| 6257 .Times(1) | 6100 .Times(1) |
| 6258 .RetiresOnSaturation(); | 6101 .RetiresOnSaturation(); |
| 6259 TexSubImage2D cmd; | 6102 TexSubImage2D cmd; |
| 6260 cmd.Init( | 6103 cmd.Init( |
| 6261 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6104 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6262 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); | 6105 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); |
| 6263 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6106 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6264 // Test if we call it again it does not clear. | 6107 // Test if we call it again it does not clear. |
| 6265 EXPECT_CALL(*gl_, TexSubImage2D( | 6108 EXPECT_CALL(*gl_, TexSubImage2D( |
| 6266 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6109 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6267 shared_memory_address_)) | 6110 shared_memory_address_)) |
| 6268 .Times(1) | 6111 .Times(1) |
| 6269 .RetiresOnSaturation(); | 6112 .RetiresOnSaturation(); |
| 6270 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6113 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6271 } | 6114 } |
| 6272 | 6115 |
| 6273 TEST_P(GLES2DecoderTest, TexSubImage2DDoesNotClearAfterTexImage2DNULLThenData) { | 6116 TEST_F(GLES2DecoderTest, TexSubImage2DDoesNotClearAfterTexImage2DNULLThenData) { |
| 6274 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 6117 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 6275 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 6118 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6276 0, 0); | 6119 0, 0); |
| 6277 DoTexImage2D( | 6120 DoTexImage2D( |
| 6278 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 6121 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6279 kSharedMemoryId, kSharedMemoryOffset); | 6122 kSharedMemoryId, kSharedMemoryOffset); |
| 6280 EXPECT_CALL(*gl_, TexSubImage2D( | 6123 EXPECT_CALL(*gl_, TexSubImage2D( |
| 6281 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6124 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6282 shared_memory_address_)) | 6125 shared_memory_address_)) |
| 6283 .Times(1) | 6126 .Times(1) |
| 6284 .RetiresOnSaturation(); | 6127 .RetiresOnSaturation(); |
| 6285 TexSubImage2D cmd; | 6128 TexSubImage2D cmd; |
| 6286 cmd.Init( | 6129 cmd.Init( |
| 6287 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6130 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6288 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); | 6131 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); |
| 6289 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6132 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6290 // Test if we call it again it does not clear. | 6133 // Test if we call it again it does not clear. |
| 6291 EXPECT_CALL(*gl_, TexSubImage2D( | 6134 EXPECT_CALL(*gl_, TexSubImage2D( |
| 6292 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6135 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6293 shared_memory_address_)) | 6136 shared_memory_address_)) |
| 6294 .Times(1) | 6137 .Times(1) |
| 6295 .RetiresOnSaturation(); | 6138 .RetiresOnSaturation(); |
| 6296 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6139 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6297 } | 6140 } |
| 6298 | 6141 |
| 6299 TEST_P( | 6142 TEST_F( |
| 6300 GLES2DecoderManualInitTest, | 6143 GLES2DecoderManualInitTest, |
| 6301 TexSubImage2DDoesNotClearAfterTexImage2DNULLThenDataWithTexImage2DIsFaster)
{ | 6144 TexSubImage2DDoesNotClearAfterTexImage2DNULLThenDataWithTexImage2DIsFaster)
{ |
| 6302 CommandLine command_line(0, NULL); | 6145 CommandLine command_line(0, NULL); |
| 6303 command_line.AppendSwitchASCII( | 6146 command_line.AppendSwitchASCII( |
| 6304 switches::kGpuDriverBugWorkarounds, | 6147 switches::kGpuDriverBugWorkarounds, |
| 6305 base::IntToString(gpu::TEXSUBIMAGE2D_FASTER_THAN_TEXIMAGE2D)); | 6148 base::IntToString(gpu::TEXSUBIMAGE2D_FASTER_THAN_TEXIMAGE2D)); |
| 6306 InitState init; | 6149 InitState init; |
| 6307 init.gl_version = "3.0"; | 6150 init.gl_version = "3.0"; |
| 6308 init.bind_generates_resource = true; | 6151 init.bind_generates_resource = true; |
| 6309 InitDecoderWithCommandLine(init, &command_line); | 6152 InitDecoderWithCommandLine(init, &command_line); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6345 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6188 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6346 // Test if we call it again it does not clear. | 6189 // Test if we call it again it does not clear. |
| 6347 EXPECT_CALL(*gl_, TexSubImage2D( | 6190 EXPECT_CALL(*gl_, TexSubImage2D( |
| 6348 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6191 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6349 shared_memory_address_)) | 6192 shared_memory_address_)) |
| 6350 .Times(1) | 6193 .Times(1) |
| 6351 .RetiresOnSaturation(); | 6194 .RetiresOnSaturation(); |
| 6352 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6195 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6353 } | 6196 } |
| 6354 | 6197 |
| 6355 TEST_P(GLES2DecoderTest, TexSubImage2DClearsAfterTexImage2DWithDataThenNULL) { | 6198 TEST_F(GLES2DecoderTest, TexSubImage2DClearsAfterTexImage2DWithDataThenNULL) { |
| 6356 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 6199 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 6357 // Put in data (so it should be marked as cleared) | 6200 // Put in data (so it should be marked as cleared) |
| 6358 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 6201 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6359 kSharedMemoryId, kSharedMemoryOffset); | 6202 kSharedMemoryId, kSharedMemoryOffset); |
| 6360 // Put in no data. | 6203 // Put in no data. |
| 6361 TexImage2D tex_cmd; | 6204 TexImage2D tex_cmd; |
| 6362 tex_cmd.Init( | 6205 tex_cmd.Init( |
| 6363 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); | 6206 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); |
| 6364 // It won't actually call TexImage2D, just mark it as uncleared. | 6207 // It won't actually call TexImage2D, just mark it as uncleared. |
| 6365 EXPECT_EQ(error::kNoError, ExecuteCmd(tex_cmd)); | 6208 EXPECT_EQ(error::kNoError, ExecuteCmd(tex_cmd)); |
| 6366 // Next call to TexSubImage2d should clear. | 6209 // Next call to TexSubImage2d should clear. |
| 6367 SetupClearTextureExpectations( | 6210 SetupClearTextureExpectations( |
| 6368 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, | 6211 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
| 6369 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); | 6212 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); |
| 6370 EXPECT_CALL(*gl_, TexSubImage2D( | 6213 EXPECT_CALL(*gl_, TexSubImage2D( |
| 6371 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6214 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6372 shared_memory_address_)) | 6215 shared_memory_address_)) |
| 6373 .Times(1) | 6216 .Times(1) |
| 6374 .RetiresOnSaturation(); | 6217 .RetiresOnSaturation(); |
| 6375 TexSubImage2D cmd; | 6218 TexSubImage2D cmd; |
| 6376 cmd.Init( | 6219 cmd.Init( |
| 6377 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6220 GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6378 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); | 6221 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); |
| 6379 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6222 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6380 } | 6223 } |
| 6381 | 6224 |
| 6382 TEST_P(GLES2DecoderWithShaderTest, DrawArraysClearsAfterTexImage2DNULL) { | 6225 TEST_F(GLES2DecoderWithShaderTest, DrawArraysClearsAfterTexImage2DNULL) { |
| 6383 SetupAllNeededVertexBuffers(); | 6226 SetupAllNeededVertexBuffers(); |
| 6384 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 6227 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 6385 // Create an uncleared texture with 2 levels. | 6228 // Create an uncleared texture with 2 levels. |
| 6386 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 6229 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6387 0, 0); | 6230 0, 0); |
| 6388 DoTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 6231 DoTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6389 0, 0); | 6232 0, 0); |
| 6390 // Expect 2 levels will be cleared. | 6233 // Expect 2 levels will be cleared. |
| 6391 SetupClearTextureExpectations( | 6234 SetupClearTextureExpectations( |
| 6392 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, | 6235 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
| (...skipping 11 matching lines...) Expand all Loading... |
| 6404 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6247 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 6405 | 6248 |
| 6406 // But not again | 6249 // But not again |
| 6407 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 6250 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 6408 .Times(1) | 6251 .Times(1) |
| 6409 .RetiresOnSaturation(); | 6252 .RetiresOnSaturation(); |
| 6410 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6253 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6411 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6254 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 6412 } | 6255 } |
| 6413 | 6256 |
| 6414 TEST_P(GLES2DecoderWithShaderTest, DrawElementsClearsAfterTexImage2DNULL) { | 6257 TEST_F(GLES2DecoderWithShaderTest, DrawElementsClearsAfterTexImage2DNULL) { |
| 6415 SetupAllNeededVertexBuffers(); | 6258 SetupAllNeededVertexBuffers(); |
| 6416 SetupIndexBuffer(); | 6259 SetupIndexBuffer(); |
| 6417 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 6260 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 6418 // Create an uncleared texture with 2 levels. | 6261 // Create an uncleared texture with 2 levels. |
| 6419 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 6262 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6420 0, 0); | 6263 0, 0); |
| 6421 DoTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 6264 DoTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6422 0, 0); | 6265 0, 0); |
| 6423 // Expect 2 levels will be cleared. | 6266 // Expect 2 levels will be cleared. |
| 6424 SetupClearTextureExpectations( | 6267 SetupClearTextureExpectations( |
| (...skipping 18 matching lines...) Expand all Loading... |
| 6443 // But not again | 6286 // But not again |
| 6444 EXPECT_CALL(*gl_, DrawElements(GL_TRIANGLES, kValidIndexRangeCount, | 6287 EXPECT_CALL(*gl_, DrawElements(GL_TRIANGLES, kValidIndexRangeCount, |
| 6445 GL_UNSIGNED_SHORT, | 6288 GL_UNSIGNED_SHORT, |
| 6446 BufferOffset(kValidIndexRangeStart * 2))) | 6289 BufferOffset(kValidIndexRangeStart * 2))) |
| 6447 .Times(1) | 6290 .Times(1) |
| 6448 .RetiresOnSaturation(); | 6291 .RetiresOnSaturation(); |
| 6449 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6292 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6450 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6293 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 6451 } | 6294 } |
| 6452 | 6295 |
| 6453 TEST_P(GLES2DecoderWithShaderTest, DrawClearsAfterTexImage2DNULLInFBO) { | 6296 TEST_F(GLES2DecoderWithShaderTest, DrawClearsAfterTexImage2DNULLInFBO) { |
| 6454 const GLuint kFBOClientTextureId = 4100; | 6297 const GLuint kFBOClientTextureId = 4100; |
| 6455 const GLuint kFBOServiceTextureId = 4101; | 6298 const GLuint kFBOServiceTextureId = 4101; |
| 6456 | 6299 |
| 6457 SetupAllNeededVertexBuffers(); | 6300 SetupAllNeededVertexBuffers(); |
| 6458 // Register a texture id. | 6301 // Register a texture id. |
| 6459 EXPECT_CALL(*gl_, GenTextures(_, _)) | 6302 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 6460 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) | 6303 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) |
| 6461 .RetiresOnSaturation(); | 6304 .RetiresOnSaturation(); |
| 6462 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); | 6305 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); |
| 6463 | 6306 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 6475 SetupTexture(); | 6318 SetupTexture(); |
| 6476 | 6319 |
| 6477 SetupExpectationsForFramebufferClearing( | 6320 SetupExpectationsForFramebufferClearing( |
| 6478 GL_FRAMEBUFFER, // target | 6321 GL_FRAMEBUFFER, // target |
| 6479 GL_COLOR_BUFFER_BIT, // clear bits | 6322 GL_COLOR_BUFFER_BIT, // clear bits |
| 6480 0, 0, 0, 0, // color | 6323 0, 0, 0, 0, // color |
| 6481 0, // stencil | 6324 0, // stencil |
| 6482 1.0f, // depth | 6325 1.0f, // depth |
| 6483 false); // scissor test | 6326 false); // scissor test |
| 6484 | 6327 |
| 6485 SetupExpectationsForApplyingDirtyState(false, // Framebuffer is RGB | 6328 SetupExpectationsForApplyingDirtyState( |
| 6486 false, // Framebuffer has depth | 6329 false, // Framebuffer is RGB |
| 6487 false, // Framebuffer has stencil | 6330 false, // Framebuffer has depth |
| 6488 0x1111, // color bits | 6331 false, // Framebuffer has stencil |
| 6489 false, // depth mask | 6332 0x1111, // color bits |
| 6490 false, // depth enabled | 6333 false, // depth mask |
| 6491 0, // front stencil mask | 6334 false, // depth enabled |
| 6492 0, // back stencil mask | 6335 0, // front stencil mask |
| 6493 false); // stencil enabled | 6336 0, // back stencil mask |
| 6337 false, // stencil enabled |
| 6338 false, // cull_face_enabled |
| 6339 false, // scissor_test_enabled |
| 6340 false); // blend_enabled |
| 6494 | 6341 |
| 6495 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 6342 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 6496 .Times(1) | 6343 .Times(1) |
| 6497 .RetiresOnSaturation(); | 6344 .RetiresOnSaturation(); |
| 6498 DrawArrays cmd; | 6345 DrawArrays cmd; |
| 6499 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 6346 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 6500 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6347 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6501 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6348 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 6502 | 6349 |
| 6503 // But not again. | 6350 // But not again. |
| 6504 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 6351 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 6505 .Times(1) | 6352 .Times(1) |
| 6506 .RetiresOnSaturation(); | 6353 .RetiresOnSaturation(); |
| 6507 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6354 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6508 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6355 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 6509 } | 6356 } |
| 6510 | 6357 |
| 6511 TEST_P(GLES2DecoderWithShaderTest, DrawWitFBOThatCantClearDoesNotDraw) { | 6358 TEST_F(GLES2DecoderWithShaderTest, DrawWitFBOThatCantClearDoesNotDraw) { |
| 6512 const GLuint kFBOClientTextureId = 4100; | 6359 const GLuint kFBOClientTextureId = 4100; |
| 6513 const GLuint kFBOServiceTextureId = 4101; | 6360 const GLuint kFBOServiceTextureId = 4101; |
| 6514 | 6361 |
| 6515 // Register a texture id. | 6362 // Register a texture id. |
| 6516 EXPECT_CALL(*gl_, GenTextures(_, _)) | 6363 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 6517 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) | 6364 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) |
| 6518 .RetiresOnSaturation(); | 6365 .RetiresOnSaturation(); |
| 6519 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); | 6366 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); |
| 6520 | 6367 |
| 6521 // Setup "render to" texture. | 6368 // Setup "render to" texture. |
| (...skipping 14 matching lines...) Expand all Loading... |
| 6536 .RetiresOnSaturation(); | 6383 .RetiresOnSaturation(); |
| 6537 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) | 6384 EXPECT_CALL(*gl_, DrawArrays(_, _, _)) |
| 6538 .Times(0) | 6385 .Times(0) |
| 6539 .RetiresOnSaturation(); | 6386 .RetiresOnSaturation(); |
| 6540 DrawArrays cmd; | 6387 DrawArrays cmd; |
| 6541 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 6388 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 6542 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6389 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6543 EXPECT_EQ(GL_INVALID_FRAMEBUFFER_OPERATION, GetGLError()); | 6390 EXPECT_EQ(GL_INVALID_FRAMEBUFFER_OPERATION, GetGLError()); |
| 6544 } | 6391 } |
| 6545 | 6392 |
| 6546 TEST_P(GLES2DecoderTest, CopyTexImage2DMarksTextureAsCleared) { | 6393 TEST_F(GLES2DecoderTest, CopyTexImage2DMarksTextureAsCleared) { |
| 6547 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 6394 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 6548 | 6395 |
| 6549 TextureManager* manager = group().texture_manager(); | 6396 TextureManager* manager = group().texture_manager(); |
| 6550 TextureRef* texture_ref = manager->GetTexture(client_texture_id_); | 6397 TextureRef* texture_ref = manager->GetTexture(client_texture_id_); |
| 6551 ASSERT_TRUE(texture_ref != NULL); | 6398 ASSERT_TRUE(texture_ref != NULL); |
| 6552 Texture* texture = texture_ref->texture(); | 6399 Texture* texture = texture_ref->texture(); |
| 6553 | 6400 |
| 6554 EXPECT_CALL(*gl_, GetError()) | 6401 EXPECT_CALL(*gl_, GetError()) |
| 6555 .WillOnce(Return(GL_NO_ERROR)) | 6402 .WillOnce(Return(GL_NO_ERROR)) |
| 6556 .RetiresOnSaturation(); | 6403 .RetiresOnSaturation(); |
| 6557 EXPECT_CALL(*gl_, CopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 1, 1, 0)) | 6404 EXPECT_CALL(*gl_, CopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 1, 1, 0)) |
| 6558 .Times(1) | 6405 .Times(1) |
| 6559 .RetiresOnSaturation(); | 6406 .RetiresOnSaturation(); |
| 6560 EXPECT_CALL(*gl_, GetError()) | 6407 EXPECT_CALL(*gl_, GetError()) |
| 6561 .WillOnce(Return(GL_NO_ERROR)) | 6408 .WillOnce(Return(GL_NO_ERROR)) |
| 6562 .RetiresOnSaturation(); | 6409 .RetiresOnSaturation(); |
| 6563 CopyTexImage2D cmd; | 6410 CopyTexImage2D cmd; |
| 6564 cmd.Init(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 1, 1, 0); | 6411 cmd.Init(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 1, 1, 0); |
| 6565 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6412 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6566 | 6413 |
| 6567 EXPECT_TRUE(texture->SafeToRenderFrom()); | 6414 EXPECT_TRUE(texture->SafeToRenderFrom()); |
| 6568 } | 6415 } |
| 6569 | 6416 |
| 6570 TEST_P(GLES2DecoderTest, CopyTexSubImage2DClearsUnclearedTexture) { | 6417 TEST_F(GLES2DecoderTest, CopyTexSubImage2DClearsUnclearedTexture) { |
| 6571 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 6418 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 6572 DoTexImage2D( | 6419 DoTexImage2D( |
| 6573 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); | 6420 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); |
| 6574 | 6421 |
| 6575 SetupClearTextureExpectations( | 6422 SetupClearTextureExpectations( |
| 6576 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, | 6423 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
| 6577 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); | 6424 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 2, 2); |
| 6578 EXPECT_CALL(*gl_, CopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 1, 1)) | 6425 EXPECT_CALL(*gl_, CopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 1, 1)) |
| 6579 .Times(1) | 6426 .Times(1) |
| 6580 .RetiresOnSaturation(); | 6427 .RetiresOnSaturation(); |
| 6581 CopyTexSubImage2D cmd; | 6428 CopyTexSubImage2D cmd; |
| 6582 cmd.Init(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 1, 1); | 6429 cmd.Init(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 1, 1); |
| 6583 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6430 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6584 } | 6431 } |
| 6585 | 6432 |
| 6586 TEST_P(GLES2DecoderManualInitTest, CompressedImage2DMarksTextureAsCleared) { | 6433 TEST_F(GLES2DecoderManualInitTest, CompressedImage2DMarksTextureAsCleared) { |
| 6587 InitState init; | 6434 InitState init; |
| 6588 init.extensions = "GL_EXT_texture_compression_s3tc"; | 6435 init.extensions = "GL_EXT_texture_compression_s3tc"; |
| 6589 init.gl_version = "3.0"; | 6436 init.gl_version = "3.0"; |
| 6590 init.bind_generates_resource = true; | 6437 init.bind_generates_resource = true; |
| 6591 InitDecoder(init); | 6438 InitDecoder(init); |
| 6592 | 6439 |
| 6593 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 6440 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 6594 EXPECT_CALL(*gl_, GetError()) | 6441 EXPECT_CALL(*gl_, GetError()) |
| 6595 .WillOnce(Return(GL_NO_ERROR)) | 6442 .WillOnce(Return(GL_NO_ERROR)) |
| 6596 .RetiresOnSaturation(); | 6443 .RetiresOnSaturation(); |
| 6597 EXPECT_CALL(*gl_, CompressedTexImage2D( | 6444 EXPECT_CALL(*gl_, CompressedTexImage2D( |
| 6598 GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB_S3TC_DXT1_EXT, 4, 4, 0, 8, _)) | 6445 GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB_S3TC_DXT1_EXT, 4, 4, 0, 8, _)) |
| 6599 .Times(1) | 6446 .Times(1) |
| 6600 .RetiresOnSaturation(); | 6447 .RetiresOnSaturation(); |
| 6601 EXPECT_CALL(*gl_, GetError()) | 6448 EXPECT_CALL(*gl_, GetError()) |
| 6602 .WillOnce(Return(GL_NO_ERROR)) | 6449 .WillOnce(Return(GL_NO_ERROR)) |
| 6603 .RetiresOnSaturation(); | 6450 .RetiresOnSaturation(); |
| 6604 CompressedTexImage2D cmd; | 6451 CompressedTexImage2D cmd; |
| 6605 cmd.Init(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB_S3TC_DXT1_EXT, 4, 4, 0, | 6452 cmd.Init(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB_S3TC_DXT1_EXT, 4, 4, 0, |
| 6606 8, kSharedMemoryId, kSharedMemoryOffset); | 6453 8, kSharedMemoryId, kSharedMemoryOffset); |
| 6607 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6454 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6608 TextureManager* manager = group().texture_manager(); | 6455 TextureManager* manager = group().texture_manager(); |
| 6609 TextureRef* texture_ref = manager->GetTexture(client_texture_id_); | 6456 TextureRef* texture_ref = manager->GetTexture(client_texture_id_); |
| 6610 EXPECT_TRUE(texture_ref->texture()->SafeToRenderFrom()); | 6457 EXPECT_TRUE(texture_ref->texture()->SafeToRenderFrom()); |
| 6611 } | 6458 } |
| 6612 | 6459 |
| 6613 TEST_P(GLES2DecoderWithShaderTest, UnClearedAttachmentsGetClearedOnClear) { | 6460 TEST_F(GLES2DecoderWithShaderTest, UnClearedAttachmentsGetClearedOnClear) { |
| 6614 const GLuint kFBOClientTextureId = 4100; | 6461 const GLuint kFBOClientTextureId = 4100; |
| 6615 const GLuint kFBOServiceTextureId = 4101; | 6462 const GLuint kFBOServiceTextureId = 4101; |
| 6616 | 6463 |
| 6617 // Register a texture id. | 6464 // Register a texture id. |
| 6618 EXPECT_CALL(*gl_, GenTextures(_, _)) | 6465 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 6619 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) | 6466 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) |
| 6620 .RetiresOnSaturation(); | 6467 .RetiresOnSaturation(); |
| 6621 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); | 6468 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); |
| 6622 | 6469 |
| 6623 // Setup "render to" texture. | 6470 // Setup "render to" texture. |
| 6624 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); | 6471 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); |
| 6625 DoTexImage2D( | 6472 DoTexImage2D( |
| 6626 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); | 6473 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); |
| 6627 DoBindFramebuffer( | 6474 DoBindFramebuffer( |
| 6628 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 6475 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
| 6629 DoFramebufferTexture2D( | 6476 DoFramebufferTexture2D( |
| 6630 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, | 6477 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, |
| 6631 kFBOClientTextureId, kFBOServiceTextureId, 0, GL_NO_ERROR); | 6478 kFBOClientTextureId, kFBOServiceTextureId, 0, GL_NO_ERROR); |
| 6632 | 6479 |
| 6633 // Setup "render from" texture. | 6480 // Setup "render from" texture. |
| 6634 SetupTexture(); | 6481 SetupTexture(); |
| 6635 | 6482 |
| 6636 SetupExpectationsForFramebufferClearing( | 6483 SetupExpectationsForFramebufferClearing( |
| 6637 GL_FRAMEBUFFER, // target | 6484 GL_FRAMEBUFFER, // target |
| 6638 GL_COLOR_BUFFER_BIT, // clear bits | 6485 GL_COLOR_BUFFER_BIT, // clear bits |
| 6639 0, 0, 0, 0, // color | 6486 0, 0, 0, 0, // color |
| 6640 0, // stencil | 6487 0, // stencil |
| 6641 1.0f, // depth | 6488 1.0f, // depth |
| 6642 false); // scissor test | 6489 false); // scissor test |
| 6643 SetupExpectationsForApplyingDirtyState(false, // Framebuffer is RGB | 6490 SetupExpectationsForApplyingDirtyState( |
| 6644 false, // Framebuffer has depth | 6491 false, // Framebuffer is RGB |
| 6645 false, // Framebuffer has stencil | 6492 false, // Framebuffer has depth |
| 6646 0x1111, // color bits | 6493 false, // Framebuffer has stencil |
| 6647 false, // depth mask | 6494 0x1111, // color bits |
| 6648 false, // depth enabled | 6495 false, // depth mask |
| 6649 0, // front stencil mask | 6496 false, // depth enabled |
| 6650 0, // back stencil mask | 6497 0, // front stencil mask |
| 6651 false); // stencil enabled | 6498 0, // back stencil mask |
| 6499 false, // stencil enabled |
| 6500 false, // cull_face_enabled |
| 6501 false, // scissor_test_enabled |
| 6502 false); // blend_enabled |
| 6652 | 6503 |
| 6653 EXPECT_CALL(*gl_, Clear(GL_COLOR_BUFFER_BIT)) | 6504 EXPECT_CALL(*gl_, Clear(GL_COLOR_BUFFER_BIT)) |
| 6654 .Times(1) | 6505 .Times(1) |
| 6655 .RetiresOnSaturation(); | 6506 .RetiresOnSaturation(); |
| 6656 | 6507 |
| 6657 Clear cmd; | 6508 Clear cmd; |
| 6658 cmd.Init(GL_COLOR_BUFFER_BIT); | 6509 cmd.Init(GL_COLOR_BUFFER_BIT); |
| 6659 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6510 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6660 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6511 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 6661 } | 6512 } |
| 6662 | 6513 |
| 6663 TEST_P(GLES2DecoderWithShaderTest, UnClearedAttachmentsGetClearedOnReadPixels) { | 6514 TEST_F(GLES2DecoderWithShaderTest, UnClearedAttachmentsGetClearedOnReadPixels) { |
| 6664 const GLuint kFBOClientTextureId = 4100; | 6515 const GLuint kFBOClientTextureId = 4100; |
| 6665 const GLuint kFBOServiceTextureId = 4101; | 6516 const GLuint kFBOServiceTextureId = 4101; |
| 6666 | 6517 |
| 6667 // Register a texture id. | 6518 // Register a texture id. |
| 6668 EXPECT_CALL(*gl_, GenTextures(_, _)) | 6519 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 6669 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) | 6520 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) |
| 6670 .RetiresOnSaturation(); | 6521 .RetiresOnSaturation(); |
| 6671 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); | 6522 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); |
| 6672 | 6523 |
| 6673 // Setup "render to" texture. | 6524 // Setup "render to" texture. |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6706 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(*result); | 6557 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(*result); |
| 6707 ReadPixels cmd; | 6558 ReadPixels cmd; |
| 6708 cmd.Init(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6559 cmd.Init(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6709 pixels_shm_id, pixels_shm_offset, | 6560 pixels_shm_id, pixels_shm_offset, |
| 6710 result_shm_id, result_shm_offset, | 6561 result_shm_id, result_shm_offset, |
| 6711 false); | 6562 false); |
| 6712 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6563 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6713 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6564 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 6714 } | 6565 } |
| 6715 | 6566 |
| 6716 TEST_P(GLES2DecoderManualInitTest, | 6567 TEST_F(GLES2DecoderManualInitTest, |
| 6717 UnClearedAttachmentsGetClearedOnReadPixelsAndDrawBufferGetsRestored) { | 6568 UnClearedAttachmentsGetClearedOnReadPixelsAndDrawBufferGetsRestored) { |
| 6718 InitState init; | 6569 InitState init; |
| 6719 init.extensions = "GL_EXT_framebuffer_multisample"; | 6570 init.extensions = "GL_EXT_framebuffer_multisample"; |
| 6720 init.gl_version = "2.1"; | 6571 init.gl_version = "2.1"; |
| 6721 init.bind_generates_resource = true; | 6572 init.bind_generates_resource = true; |
| 6722 InitDecoder(init); | 6573 InitDecoder(init); |
| 6723 const GLuint kFBOClientTextureId = 4100; | 6574 const GLuint kFBOClientTextureId = 4100; |
| 6724 const GLuint kFBOServiceTextureId = 4101; | 6575 const GLuint kFBOServiceTextureId = 4101; |
| 6725 | 6576 |
| 6726 // Register a texture id. | 6577 // Register a texture id. |
| 6727 EXPECT_CALL(*gl_, GenTextures(_, _)) | 6578 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 6728 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) | 6579 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) |
| 6729 .RetiresOnSaturation(); | 6580 .RetiresOnSaturation(); |
| 6730 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); | 6581 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); |
| 6731 | 6582 |
| 6732 // Setup "render from" texture. | 6583 // Setup "render from" texture. |
| 6733 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); | 6584 DoBindTexture(GL_TEXTURE_2D, kFBOClientTextureId, kFBOServiceTextureId); |
| 6734 DoTexImage2D( | 6585 DoTexImage2D( |
| 6735 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); | 6586 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); |
| 6736 DoBindFramebuffer( | 6587 DoBindFramebuffer( |
| 6737 GL_READ_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 6588 GL_READ_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
| 6738 DoFramebufferTexture2D( | 6589 DoFramebufferTexture2D( |
| 6739 GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, | 6590 GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, |
| 6740 kFBOClientTextureId, kFBOServiceTextureId, 0, GL_NO_ERROR); | 6591 kFBOClientTextureId, kFBOServiceTextureId, 0, GL_NO_ERROR); |
| 6741 | 6592 |
| 6742 // Enable GL_SCISSOR_TEST to make sure we disable it in the clear, | |
| 6743 // then re-enable after. | |
| 6744 DoEnableDisable(GL_SCISSOR_TEST, true); | |
| 6745 | |
| 6746 SetupExpectationsForFramebufferClearingMulti( | 6593 SetupExpectationsForFramebufferClearingMulti( |
| 6747 kServiceFramebufferId, // read framebuffer service id | 6594 kServiceFramebufferId, // read framebuffer service id |
| 6748 0, // backbuffer service id | 6595 0, // backbuffer service id |
| 6749 GL_READ_FRAMEBUFFER, // target | 6596 GL_READ_FRAMEBUFFER, // target |
| 6750 GL_COLOR_BUFFER_BIT, // clear bits | 6597 GL_COLOR_BUFFER_BIT, // clear bits |
| 6751 0, | 6598 0, 0, 0, 0, // color |
| 6752 0, | 6599 0, // stencil |
| 6753 0, | 6600 1.0f, // depth |
| 6754 0, // color | 6601 false); // scissor test |
| 6755 0, // stencil | |
| 6756 1.0f, // depth | |
| 6757 true); // scissor test | |
| 6758 | 6602 |
| 6759 EXPECT_CALL(*gl_, GetError()) | 6603 EXPECT_CALL(*gl_, GetError()) |
| 6760 .WillOnce(Return(GL_NO_ERROR)) | 6604 .WillOnce(Return(GL_NO_ERROR)) |
| 6761 .WillOnce(Return(GL_NO_ERROR)) | 6605 .WillOnce(Return(GL_NO_ERROR)) |
| 6762 .RetiresOnSaturation(); | 6606 .RetiresOnSaturation(); |
| 6763 EXPECT_CALL(*gl_, ReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, _)) | 6607 EXPECT_CALL(*gl_, ReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, _)) |
| 6764 .Times(1) | 6608 .Times(1) |
| 6765 .RetiresOnSaturation(); | 6609 .RetiresOnSaturation(); |
| 6766 typedef ReadPixels::Result Result; | 6610 typedef ReadPixels::Result Result; |
| 6767 uint32 result_shm_id = kSharedMemoryId; | 6611 uint32 result_shm_id = kSharedMemoryId; |
| 6768 uint32 result_shm_offset = kSharedMemoryOffset; | 6612 uint32 result_shm_offset = kSharedMemoryOffset; |
| 6769 uint32 pixels_shm_id = kSharedMemoryId; | 6613 uint32 pixels_shm_id = kSharedMemoryId; |
| 6770 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(Result); | 6614 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(Result); |
| 6771 ReadPixels cmd; | 6615 ReadPixels cmd; |
| 6772 cmd.Init(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6616 cmd.Init(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
| 6773 pixels_shm_id, pixels_shm_offset, | 6617 pixels_shm_id, pixels_shm_offset, |
| 6774 result_shm_id, result_shm_offset, | 6618 result_shm_id, result_shm_offset, |
| 6775 false); | 6619 false); |
| 6776 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6620 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6777 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6621 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 6778 } | 6622 } |
| 6779 | 6623 |
| 6780 TEST_P(GLES2DecoderWithShaderTest, DrawClearsAfterRenderbufferStorageInFBO) { | 6624 TEST_F(GLES2DecoderWithShaderTest, DrawClearsAfterRenderbufferStorageInFBO) { |
| 6781 SetupTexture(); | 6625 SetupTexture(); |
| 6782 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, | 6626 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
| 6783 kServiceRenderbufferId); | 6627 kServiceRenderbufferId); |
| 6784 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 6628 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 6785 kServiceFramebufferId); | 6629 kServiceFramebufferId); |
| 6786 DoRenderbufferStorage( | 6630 DoRenderbufferStorage( |
| 6787 GL_RENDERBUFFER, GL_RGBA4, GL_RGBA, 100, 50, GL_NO_ERROR); | 6631 GL_RENDERBUFFER, GL_RGBA4, GL_RGBA, 100, 50, GL_NO_ERROR); |
| 6788 DoFramebufferRenderbuffer( | 6632 DoFramebufferRenderbuffer( |
| 6789 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, | 6633 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, |
| 6790 client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR); | 6634 client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR); |
| 6791 | 6635 |
| 6792 SetupExpectationsForFramebufferClearing( | 6636 SetupExpectationsForFramebufferClearing( |
| 6793 GL_FRAMEBUFFER, // target | 6637 GL_FRAMEBUFFER, // target |
| 6794 GL_COLOR_BUFFER_BIT, // clear bits | 6638 GL_COLOR_BUFFER_BIT, // clear bits |
| 6795 0, 0, 0, 0, // color | 6639 0, 0, 0, 0, // color |
| 6796 0, // stencil | 6640 0, // stencil |
| 6797 1.0f, // depth | 6641 1.0f, // depth |
| 6798 false); // scissor test | 6642 false); // scissor test |
| 6799 | 6643 |
| 6800 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); | 6644 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); |
| 6801 SetupExpectationsForApplyingDirtyState(false, // Framebuffer is RGB | 6645 SetupExpectationsForApplyingDirtyState( |
| 6802 false, // Framebuffer has depth | 6646 false, // Framebuffer is RGB |
| 6803 false, // Framebuffer has stencil | 6647 false, // Framebuffer has depth |
| 6804 0x1111, // color bits | 6648 false, // Framebuffer has stencil |
| 6805 false, // depth mask | 6649 0x1111, // color bits |
| 6806 false, // depth enabled | 6650 false, // depth mask |
| 6807 0, // front stencil mask | 6651 false, // depth enabled |
| 6808 0, // back stencil mask | 6652 0, // front stencil mask |
| 6809 false); // stencil enabled | 6653 0, // back stencil mask |
| 6654 false, // stencil enabled |
| 6655 false, // cull_face_enabled |
| 6656 false, // scissor_test_enabled |
| 6657 false); // blend_enabled |
| 6810 | 6658 |
| 6811 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 6659 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 6812 .Times(1) | 6660 .Times(1) |
| 6813 .RetiresOnSaturation(); | 6661 .RetiresOnSaturation(); |
| 6814 DrawArrays cmd; | 6662 DrawArrays cmd; |
| 6815 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 6663 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 6816 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6664 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6817 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6665 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 6818 } | 6666 } |
| 6819 | 6667 |
| 6820 TEST_P(GLES2DecoderManualInitTest, DrawArraysClearsAfterTexImage2DNULLCubemap) { | 6668 TEST_F(GLES2DecoderTest, DrawArraysClearsAfterTexImage2DNULLCubemap) { |
| 6821 InitState init; | |
| 6822 init.gl_version = "opengl es 2.0"; | |
| 6823 init.has_alpha = true; | |
| 6824 init.has_depth = true; | |
| 6825 init.request_alpha = true; | |
| 6826 init.request_depth = true; | |
| 6827 InitDecoder(init); | |
| 6828 | |
| 6829 static const GLenum faces[] = { | 6669 static const GLenum faces[] = { |
| 6830 GL_TEXTURE_CUBE_MAP_POSITIVE_X, | 6670 GL_TEXTURE_CUBE_MAP_POSITIVE_X, |
| 6831 GL_TEXTURE_CUBE_MAP_NEGATIVE_X, | 6671 GL_TEXTURE_CUBE_MAP_NEGATIVE_X, |
| 6832 GL_TEXTURE_CUBE_MAP_POSITIVE_Y, | 6672 GL_TEXTURE_CUBE_MAP_POSITIVE_Y, |
| 6833 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, | 6673 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, |
| 6834 GL_TEXTURE_CUBE_MAP_POSITIVE_Z, | 6674 GL_TEXTURE_CUBE_MAP_POSITIVE_Z, |
| 6835 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, | 6675 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, |
| 6836 }; | 6676 }; |
| 6837 SetupCubemapProgram(); | 6677 SetupCubemapProgram(); |
| 6838 DoBindTexture(GL_TEXTURE_CUBE_MAP, client_texture_id_, kServiceTextureId); | 6678 DoBindTexture(GL_TEXTURE_CUBE_MAP, client_texture_id_, kServiceTextureId); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 6860 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); | 6700 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); |
| 6861 SetupExpectationsForApplyingDefaultDirtyState(); | 6701 SetupExpectationsForApplyingDefaultDirtyState(); |
| 6862 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 6702 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 6863 .Times(1) | 6703 .Times(1) |
| 6864 .RetiresOnSaturation(); | 6704 .RetiresOnSaturation(); |
| 6865 DrawArrays cmd; | 6705 DrawArrays cmd; |
| 6866 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 6706 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 6867 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6707 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6868 } | 6708 } |
| 6869 | 6709 |
| 6870 TEST_P(GLES2DecoderTest, TextureUsageAngleExtNotEnabledByDefault) { | 6710 TEST_F(GLES2DecoderTest, TextureUsageAngleExtNotEnabledByDefault) { |
| 6871 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 6711 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 6872 | 6712 |
| 6873 TexParameteri cmd; | 6713 TexParameteri cmd; |
| 6874 cmd.Init(GL_TEXTURE_2D, | 6714 cmd.Init(GL_TEXTURE_2D, |
| 6875 GL_TEXTURE_USAGE_ANGLE, | 6715 GL_TEXTURE_USAGE_ANGLE, |
| 6876 GL_FRAMEBUFFER_ATTACHMENT_ANGLE); | 6716 GL_FRAMEBUFFER_ATTACHMENT_ANGLE); |
| 6877 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6717 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6878 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 6718 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 6879 } | 6719 } |
| 6880 | 6720 |
| 6881 TEST_P(GLES2DecoderWithShaderTest, | 6721 TEST_F(GLES2DecoderWithShaderTest, |
| 6882 DrawClearsAfterRenderbuffersWithMultipleAttachments) { | 6722 DrawClearsAfterRenderbuffersWithMultipleAttachments) { |
| 6883 const GLuint kFBOClientTextureId = 4100; | 6723 const GLuint kFBOClientTextureId = 4100; |
| 6884 const GLuint kFBOServiceTextureId = 4101; | 6724 const GLuint kFBOServiceTextureId = 4101; |
| 6885 | 6725 |
| 6886 // Register a texture id. | 6726 // Register a texture id. |
| 6887 EXPECT_CALL(*gl_, GenTextures(_, _)) | 6727 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 6888 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) | 6728 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) |
| 6889 .RetiresOnSaturation(); | 6729 .RetiresOnSaturation(); |
| 6890 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); | 6730 GenHelper<GenTexturesImmediate>(kFBOClientTextureId); |
| 6891 | 6731 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 6913 SetupTexture(); | 6753 SetupTexture(); |
| 6914 SetupExpectationsForFramebufferClearing( | 6754 SetupExpectationsForFramebufferClearing( |
| 6915 GL_FRAMEBUFFER, // target | 6755 GL_FRAMEBUFFER, // target |
| 6916 GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT, // clear bits | 6756 GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT, // clear bits |
| 6917 0, 0, 0, 0, // color | 6757 0, 0, 0, 0, // color |
| 6918 0, // stencil | 6758 0, // stencil |
| 6919 1.0f, // depth | 6759 1.0f, // depth |
| 6920 false); // scissor test | 6760 false); // scissor test |
| 6921 | 6761 |
| 6922 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); | 6762 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); |
| 6923 SetupExpectationsForApplyingDirtyState(false, // Framebuffer is RGB | 6763 SetupExpectationsForApplyingDirtyState( |
| 6924 true, // Framebuffer has depth | 6764 false, // Framebuffer is RGB |
| 6925 false, // Framebuffer has stencil | 6765 true, // Framebuffer has depth |
| 6926 0x1111, // color bits | 6766 false, // Framebuffer has stencil |
| 6927 true, // depth mask | 6767 0x1111, // color bits |
| 6928 false, // depth enabled | 6768 true, // depth mask |
| 6929 0, // front stencil mask | 6769 false, // depth enabled |
| 6930 0, // back stencil mask | 6770 0, // front stencil mask |
| 6931 false); // stencil enabled | 6771 0, // back stencil mask |
| 6772 false, // stencil enabled |
| 6773 false, // cull_face_enabled |
| 6774 false, // scissor_test_enabled |
| 6775 false); // blend_enabled |
| 6932 | 6776 |
| 6933 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 6777 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 6934 .Times(1) | 6778 .Times(1) |
| 6935 .RetiresOnSaturation(); | 6779 .RetiresOnSaturation(); |
| 6936 DrawArrays cmd; | 6780 DrawArrays cmd; |
| 6937 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 6781 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 6938 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6782 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 6939 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6783 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 6940 } | 6784 } |
| 6941 | 6785 |
| 6942 TEST_P(GLES2DecoderWithShaderTest, CopyTexImageWithInCompleteFBOFails) { | 6786 TEST_F(GLES2DecoderWithShaderTest, CopyTexImageWithInCompleteFBOFails) { |
| 6943 GLenum target = GL_TEXTURE_2D; | 6787 GLenum target = GL_TEXTURE_2D; |
| 6944 GLint level = 0; | 6788 GLint level = 0; |
| 6945 GLenum internal_format = GL_RGBA; | 6789 GLenum internal_format = GL_RGBA; |
| 6946 GLsizei width = 2; | 6790 GLsizei width = 2; |
| 6947 GLsizei height = 4; | 6791 GLsizei height = 4; |
| 6948 GLint border = 0; | 6792 GLint border = 0; |
| 6949 SetupTexture(); | 6793 SetupTexture(); |
| 6950 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, | 6794 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
| 6951 kServiceRenderbufferId); | 6795 kServiceRenderbufferId); |
| 6952 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 6796 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7005 } else { | 6849 } else { |
| 7006 EXPECT_TRUE(framebuffer_manager->IsComplete(framebuffer)); | 6850 EXPECT_TRUE(framebuffer_manager->IsComplete(framebuffer)); |
| 7007 } | 6851 } |
| 7008 // Cleanup | 6852 // Cleanup |
| 7009 DoDeleteFramebuffer( | 6853 DoDeleteFramebuffer( |
| 7010 client_framebuffer_id_, kServiceFramebufferId, | 6854 client_framebuffer_id_, kServiceFramebufferId, |
| 7011 bound_fbo, GL_FRAMEBUFFER, 0, | 6855 bound_fbo, GL_FRAMEBUFFER, 0, |
| 7012 bound_fbo, GL_FRAMEBUFFER, 0); | 6856 bound_fbo, GL_FRAMEBUFFER, 0); |
| 7013 } | 6857 } |
| 7014 | 6858 |
| 7015 TEST_P(GLES2DecoderWithShaderTest, | 6859 TEST_F(GLES2DecoderWithShaderTest, |
| 7016 RenderbufferChangesMarkFBOAsNotCompleteBoundFBO) { | 6860 RenderbufferChangesMarkFBOAsNotCompleteBoundFBO) { |
| 7017 CheckRenderbufferChangesMarkFBOAsNotComplete(true); | 6861 CheckRenderbufferChangesMarkFBOAsNotComplete(true); |
| 7018 } | 6862 } |
| 7019 | 6863 |
| 7020 TEST_P(GLES2DecoderWithShaderTest, | 6864 TEST_F(GLES2DecoderWithShaderTest, |
| 7021 RenderbufferChangesMarkFBOAsNotCompleteUnboundFBO) { | 6865 RenderbufferChangesMarkFBOAsNotCompleteUnboundFBO) { |
| 7022 CheckRenderbufferChangesMarkFBOAsNotComplete(false); | 6866 CheckRenderbufferChangesMarkFBOAsNotComplete(false); |
| 7023 } | 6867 } |
| 7024 | 6868 |
| 7025 void GLES2DecoderWithShaderTest::CheckTextureChangesMarkFBOAsNotComplete( | 6869 void GLES2DecoderWithShaderTest::CheckTextureChangesMarkFBOAsNotComplete( |
| 7026 bool bound_fbo) { | 6870 bool bound_fbo) { |
| 7027 FramebufferManager* framebuffer_manager = group().framebuffer_manager(); | 6871 FramebufferManager* framebuffer_manager = group().framebuffer_manager(); |
| 7028 const GLuint kFBOClientTextureId = 4100; | 6872 const GLuint kFBOClientTextureId = 4100; |
| 7029 const GLuint kFBOServiceTextureId = 4101; | 6873 const GLuint kFBOServiceTextureId = 4101; |
| 7030 | 6874 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7099 } else { | 6943 } else { |
| 7100 EXPECT_TRUE(framebuffer_manager->IsComplete(framebuffer)); | 6944 EXPECT_TRUE(framebuffer_manager->IsComplete(framebuffer)); |
| 7101 } | 6945 } |
| 7102 // Cleanup | 6946 // Cleanup |
| 7103 DoDeleteFramebuffer( | 6947 DoDeleteFramebuffer( |
| 7104 client_framebuffer_id_, kServiceFramebufferId, | 6948 client_framebuffer_id_, kServiceFramebufferId, |
| 7105 bound_fbo, GL_FRAMEBUFFER, 0, | 6949 bound_fbo, GL_FRAMEBUFFER, 0, |
| 7106 bound_fbo, GL_FRAMEBUFFER, 0); | 6950 bound_fbo, GL_FRAMEBUFFER, 0); |
| 7107 } | 6951 } |
| 7108 | 6952 |
| 7109 TEST_P(GLES2DecoderWithShaderTest, TextureChangesMarkFBOAsNotCompleteBoundFBO) { | 6953 TEST_F(GLES2DecoderWithShaderTest, TextureChangesMarkFBOAsNotCompleteBoundFBO) { |
| 7110 CheckTextureChangesMarkFBOAsNotComplete(true); | 6954 CheckTextureChangesMarkFBOAsNotComplete(true); |
| 7111 } | 6955 } |
| 7112 | 6956 |
| 7113 TEST_P(GLES2DecoderWithShaderTest, | 6957 TEST_F(GLES2DecoderWithShaderTest, |
| 7114 TextureChangesMarkFBOAsNotCompleteUnboundFBO) { | 6958 TextureChangesMarkFBOAsNotCompleteUnboundFBO) { |
| 7115 CheckTextureChangesMarkFBOAsNotComplete(false); | 6959 CheckTextureChangesMarkFBOAsNotComplete(false); |
| 7116 } | 6960 } |
| 7117 | 6961 |
| 7118 TEST_P(GLES2DecoderWithShaderTest, | 6962 TEST_F(GLES2DecoderWithShaderTest, |
| 7119 DrawingWithFBOTwiceChecksForFBOCompleteOnce) { | 6963 DrawingWithFBOTwiceChecksForFBOCompleteOnce) { |
| 7120 const GLuint kFBOClientTextureId = 4100; | 6964 const GLuint kFBOClientTextureId = 4100; |
| 7121 const GLuint kFBOServiceTextureId = 4101; | 6965 const GLuint kFBOServiceTextureId = 4101; |
| 7122 | 6966 |
| 7123 SetupAllNeededVertexBuffers(); | 6967 SetupAllNeededVertexBuffers(); |
| 7124 | 6968 |
| 7125 // Register a texture id. | 6969 // Register a texture id. |
| 7126 EXPECT_CALL(*gl_, GenTextures(_, _)) | 6970 EXPECT_CALL(*gl_, GenTextures(_, _)) |
| 7127 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) | 6971 .WillOnce(SetArgumentPointee<1>(kFBOServiceTextureId)) |
| 7128 .RetiresOnSaturation(); | 6972 .RetiresOnSaturation(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 7140 kFBOClientTextureId, kFBOServiceTextureId, 0, GL_NO_ERROR); | 6984 kFBOClientTextureId, kFBOServiceTextureId, 0, GL_NO_ERROR); |
| 7141 | 6985 |
| 7142 // Setup "render from" texture. | 6986 // Setup "render from" texture. |
| 7143 SetupTexture(); | 6987 SetupTexture(); |
| 7144 | 6988 |
| 7145 // Make sure we check for framebuffer complete. | 6989 // Make sure we check for framebuffer complete. |
| 7146 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) | 6990 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) |
| 7147 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) | 6991 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) |
| 7148 .RetiresOnSaturation(); | 6992 .RetiresOnSaturation(); |
| 7149 | 6993 |
| 7150 SetupExpectationsForApplyingDirtyState(false, // Framebuffer is RGB | 6994 SetupExpectationsForApplyingDirtyState( |
| 7151 false, // Framebuffer has depth | 6995 false, // Framebuffer is RGB |
| 7152 false, // Framebuffer has stencil | 6996 false, // Framebuffer has depth |
| 7153 0x1111, // color bits | 6997 false, // Framebuffer has stencil |
| 7154 false, // depth mask | 6998 0x1111, // color bits |
| 7155 false, // depth enabled | 6999 false, // depth mask |
| 7156 0, // front stencil mask | 7000 false, // depth enabled |
| 7157 0, // back stencil mask | 7001 0, // front stencil mask |
| 7158 false); // stencil enabled | 7002 0, // back stencil mask |
| 7003 false, // stencil enabled |
| 7004 false, // cull_face_enabled |
| 7005 false, // scissor_test_enabled |
| 7006 false); // blend_enabled |
| 7159 | 7007 |
| 7160 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 7008 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 7161 .Times(1) | 7009 .Times(1) |
| 7162 .RetiresOnSaturation(); | 7010 .RetiresOnSaturation(); |
| 7163 DrawArrays cmd; | 7011 DrawArrays cmd; |
| 7164 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 7012 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 7165 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 7013 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 7166 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 7014 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 7167 | 7015 |
| 7168 // But not again. | 7016 // But not again. |
| 7169 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 7017 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 7170 .Times(1) | 7018 .Times(1) |
| 7171 .RetiresOnSaturation(); | 7019 .RetiresOnSaturation(); |
| 7172 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 7020 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 7173 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 7021 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 7174 } | 7022 } |
| 7175 | 7023 |
| 7176 TEST_P(GLES2DecoderTest, BeginQueryEXTDisabled) { | 7024 TEST_F(GLES2DecoderTest, BeginQueryEXTDisabled) { |
| 7177 // Test something fails if off. | 7025 // Test something fails if off. |
| 7178 } | 7026 } |
| 7179 | 7027 |
| 7180 TEST_P(GLES2DecoderManualInitTest, BeginEndQueryEXT) { | 7028 TEST_F(GLES2DecoderManualInitTest, BeginEndQueryEXT) { |
| 7181 InitState init; | 7029 InitState init; |
| 7182 init.extensions = "GL_EXT_occlusion_query_boolean"; | 7030 init.extensions = "GL_EXT_occlusion_query_boolean"; |
| 7183 init.gl_version = "opengl es 2.0"; | 7031 init.gl_version = "opengl es 2.0"; |
| 7184 init.has_alpha = true; | 7032 init.has_alpha = true; |
| 7185 init.request_alpha = true; | 7033 init.request_alpha = true; |
| 7186 init.bind_generates_resource = true; | 7034 init.bind_generates_resource = true; |
| 7187 InitDecoder(init); | 7035 InitDecoder(init); |
| 7188 | 7036 |
| 7189 // Test end fails if no begin. | 7037 // Test end fails if no begin. |
| 7190 EndQueryEXT end_cmd; | 7038 EndQueryEXT end_cmd; |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7357 if (query_type.is_gl) { | 7205 if (query_type.is_gl) { |
| 7358 EXPECT_CALL(*gl, DeleteQueriesARB(1, _)) | 7206 EXPECT_CALL(*gl, DeleteQueriesARB(1, _)) |
| 7359 .Times(1) | 7207 .Times(1) |
| 7360 .RetiresOnSaturation(); | 7208 .RetiresOnSaturation(); |
| 7361 } | 7209 } |
| 7362 if (query_type.type == GL_COMMANDS_COMPLETED_CHROMIUM) | 7210 if (query_type.type == GL_COMMANDS_COMPLETED_CHROMIUM) |
| 7363 EXPECT_CALL(*gl, DeleteSync(kGlSync)).Times(1).RetiresOnSaturation(); | 7211 EXPECT_CALL(*gl, DeleteSync(kGlSync)).Times(1).RetiresOnSaturation(); |
| 7364 test->ResetDecoder(); | 7212 test->ResetDecoder(); |
| 7365 } | 7213 } |
| 7366 | 7214 |
| 7367 TEST_P(GLES2DecoderManualInitTest, BeginEndQueryEXTBadMemoryIdFails) { | 7215 TEST_F(GLES2DecoderManualInitTest, BeginEndQueryEXTBadMemoryIdFails) { |
| 7368 for (size_t i = 0; i < arraysize(kQueryTypes); ++i) { | 7216 for (size_t i = 0; i < arraysize(kQueryTypes); ++i) { |
| 7369 CheckBeginEndQueryBadMemoryFails( | 7217 CheckBeginEndQueryBadMemoryFails( |
| 7370 this, kNewClientId, kNewServiceId, | 7218 this, kNewClientId, kNewServiceId, |
| 7371 kQueryTypes[i], | 7219 kQueryTypes[i], |
| 7372 kInvalidSharedMemoryId, kSharedMemoryOffset); | 7220 kInvalidSharedMemoryId, kSharedMemoryOffset); |
| 7373 } | 7221 } |
| 7374 } | 7222 } |
| 7375 | 7223 |
| 7376 TEST_P(GLES2DecoderManualInitTest, BeginEndQueryEXTBadMemoryOffsetFails) { | 7224 TEST_F(GLES2DecoderManualInitTest, BeginEndQueryEXTBadMemoryOffsetFails) { |
| 7377 for (size_t i = 0; i < arraysize(kQueryTypes); ++i) { | 7225 for (size_t i = 0; i < arraysize(kQueryTypes); ++i) { |
| 7378 // Out-of-bounds. | 7226 // Out-of-bounds. |
| 7379 CheckBeginEndQueryBadMemoryFails( | 7227 CheckBeginEndQueryBadMemoryFails( |
| 7380 this, kNewClientId, kNewServiceId, | 7228 this, kNewClientId, kNewServiceId, |
| 7381 kQueryTypes[i], | 7229 kQueryTypes[i], |
| 7382 kSharedMemoryId, kInvalidSharedMemoryOffset); | 7230 kSharedMemoryId, kInvalidSharedMemoryOffset); |
| 7383 // Overflow. | 7231 // Overflow. |
| 7384 CheckBeginEndQueryBadMemoryFails( | 7232 CheckBeginEndQueryBadMemoryFails( |
| 7385 this, kNewClientId, kNewServiceId, | 7233 this, kNewClientId, kNewServiceId, |
| 7386 kQueryTypes[i], | 7234 kQueryTypes[i], |
| 7387 kSharedMemoryId, 0xfffffffcu); | 7235 kSharedMemoryId, 0xfffffffcu); |
| 7388 } | 7236 } |
| 7389 } | 7237 } |
| 7390 | 7238 |
| 7391 TEST_P(GLES2DecoderTest, BeginEndQueryEXTCommandsIssuedCHROMIUM) { | 7239 TEST_F(GLES2DecoderTest, BeginEndQueryEXTCommandsIssuedCHROMIUM) { |
| 7392 BeginQueryEXT begin_cmd; | 7240 BeginQueryEXT begin_cmd; |
| 7393 | 7241 |
| 7394 GenHelper<GenQueriesEXTImmediate>(kNewClientId); | 7242 GenHelper<GenQueriesEXTImmediate>(kNewClientId); |
| 7395 | 7243 |
| 7396 // Test valid parameters work. | 7244 // Test valid parameters work. |
| 7397 begin_cmd.Init( | 7245 begin_cmd.Init( |
| 7398 GL_COMMANDS_ISSUED_CHROMIUM, kNewClientId, | 7246 GL_COMMANDS_ISSUED_CHROMIUM, kNewClientId, |
| 7399 kSharedMemoryId, kSharedMemoryOffset); | 7247 kSharedMemoryId, kSharedMemoryOffset); |
| 7400 EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd)); | 7248 EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd)); |
| 7401 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 7249 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 7402 | 7250 |
| 7403 QueryManager* query_manager = decoder_->GetQueryManager(); | 7251 QueryManager* query_manager = decoder_->GetQueryManager(); |
| 7404 ASSERT_TRUE(query_manager != NULL); | 7252 ASSERT_TRUE(query_manager != NULL); |
| 7405 QueryManager::Query* query = query_manager->GetQuery(kNewClientId); | 7253 QueryManager::Query* query = query_manager->GetQuery(kNewClientId); |
| 7406 ASSERT_TRUE(query != NULL); | 7254 ASSERT_TRUE(query != NULL); |
| 7407 EXPECT_FALSE(query->pending()); | 7255 EXPECT_FALSE(query->pending()); |
| 7408 | 7256 |
| 7409 // Test end succeeds | 7257 // Test end succeeds |
| 7410 EndQueryEXT end_cmd; | 7258 EndQueryEXT end_cmd; |
| 7411 end_cmd.Init(GL_COMMANDS_ISSUED_CHROMIUM, 1); | 7259 end_cmd.Init(GL_COMMANDS_ISSUED_CHROMIUM, 1); |
| 7412 EXPECT_EQ(error::kNoError, ExecuteCmd(end_cmd)); | 7260 EXPECT_EQ(error::kNoError, ExecuteCmd(end_cmd)); |
| 7413 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 7261 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 7414 EXPECT_FALSE(query->pending()); | 7262 EXPECT_FALSE(query->pending()); |
| 7415 } | 7263 } |
| 7416 | 7264 |
| 7417 TEST_P(GLES2DecoderTest, BeginEndQueryEXTGetErrorQueryCHROMIUM) { | 7265 TEST_F(GLES2DecoderTest, BeginEndQueryEXTGetErrorQueryCHROMIUM) { |
| 7418 BeginQueryEXT begin_cmd; | 7266 BeginQueryEXT begin_cmd; |
| 7419 | 7267 |
| 7420 GenHelper<GenQueriesEXTImmediate>(kNewClientId); | 7268 GenHelper<GenQueriesEXTImmediate>(kNewClientId); |
| 7421 | 7269 |
| 7422 // Test valid parameters work. | 7270 // Test valid parameters work. |
| 7423 begin_cmd.Init( | 7271 begin_cmd.Init( |
| 7424 GL_GET_ERROR_QUERY_CHROMIUM, kNewClientId, | 7272 GL_GET_ERROR_QUERY_CHROMIUM, kNewClientId, |
| 7425 kSharedMemoryId, kSharedMemoryOffset); | 7273 kSharedMemoryId, kSharedMemoryOffset); |
| 7426 EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd)); | 7274 EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd)); |
| 7427 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 7275 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 7441 | 7289 |
| 7442 EndQueryEXT end_cmd; | 7290 EndQueryEXT end_cmd; |
| 7443 end_cmd.Init(GL_GET_ERROR_QUERY_CHROMIUM, 1); | 7291 end_cmd.Init(GL_GET_ERROR_QUERY_CHROMIUM, 1); |
| 7444 EXPECT_EQ(error::kNoError, ExecuteCmd(end_cmd)); | 7292 EXPECT_EQ(error::kNoError, ExecuteCmd(end_cmd)); |
| 7445 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 7293 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 7446 EXPECT_FALSE(query->pending()); | 7294 EXPECT_FALSE(query->pending()); |
| 7447 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_VALUE), | 7295 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_VALUE), |
| 7448 static_cast<GLenum>(sync->result)); | 7296 static_cast<GLenum>(sync->result)); |
| 7449 } | 7297 } |
| 7450 | 7298 |
| 7451 TEST_P(GLES2DecoderManualInitTest, BeginEndQueryEXTCommandsCompletedCHROMIUM) { | 7299 TEST_F(GLES2DecoderManualInitTest, BeginEndQueryEXTCommandsCompletedCHROMIUM) { |
| 7452 InitState init; | 7300 InitState init; |
| 7453 init.extensions = "GL_EXT_occlusion_query_boolean GL_ARB_sync"; | 7301 init.extensions = "GL_EXT_occlusion_query_boolean GL_ARB_sync"; |
| 7454 init.gl_version = "opengl es 2.0"; | 7302 init.gl_version = "opengl es 2.0"; |
| 7455 init.has_alpha = true; | 7303 init.has_alpha = true; |
| 7456 init.request_alpha = true; | 7304 init.request_alpha = true; |
| 7457 init.bind_generates_resource = true; | 7305 init.bind_generates_resource = true; |
| 7458 InitDecoder(init); | 7306 InitDecoder(init); |
| 7459 | 7307 |
| 7460 GenHelper<GenQueriesEXTImmediate>(kNewClientId); | 7308 GenHelper<GenQueriesEXTImmediate>(kNewClientId); |
| 7461 | 7309 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7500 | 7348 |
| 7501 EXPECT_TRUE(process_success); | 7349 EXPECT_TRUE(process_success); |
| 7502 EXPECT_FALSE(query->pending()); | 7350 EXPECT_FALSE(query->pending()); |
| 7503 QuerySync* sync = static_cast<QuerySync*>(shared_memory_address_); | 7351 QuerySync* sync = static_cast<QuerySync*>(shared_memory_address_); |
| 7504 EXPECT_EQ(static_cast<GLenum>(0), static_cast<GLenum>(sync->result)); | 7352 EXPECT_EQ(static_cast<GLenum>(0), static_cast<GLenum>(sync->result)); |
| 7505 | 7353 |
| 7506 EXPECT_CALL(*gl_, DeleteSync(kGlSync)).Times(1).RetiresOnSaturation(); | 7354 EXPECT_CALL(*gl_, DeleteSync(kGlSync)).Times(1).RetiresOnSaturation(); |
| 7507 ResetDecoder(); | 7355 ResetDecoder(); |
| 7508 } | 7356 } |
| 7509 | 7357 |
| 7510 TEST_P(GLES2DecoderTest, ProduceAndConsumeTextureCHROMIUM) { | 7358 TEST_F(GLES2DecoderTest, ProduceAndConsumeTextureCHROMIUM) { |
| 7511 Mailbox mailbox = Mailbox::Generate(); | 7359 Mailbox mailbox = Mailbox::Generate(); |
| 7512 | 7360 |
| 7513 memcpy(shared_memory_address_, mailbox.name, sizeof(mailbox.name)); | 7361 memcpy(shared_memory_address_, mailbox.name, sizeof(mailbox.name)); |
| 7514 | 7362 |
| 7515 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 7363 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 7516 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 7364 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 7517 0, 0); | 7365 0, 0); |
| 7518 DoTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, 2, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 7366 DoTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, 2, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 7519 0, 0); | 7367 0, 0); |
| 7520 TextureRef* texture_ref = group().texture_manager()->GetTexture( | 7368 TextureRef* texture_ref = group().texture_manager()->GetTexture( |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7583 EXPECT_EQ(2, width); | 7431 EXPECT_EQ(2, width); |
| 7584 EXPECT_EQ(4, height); | 7432 EXPECT_EQ(4, height); |
| 7585 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 1, &type, &internal_format)); | 7433 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 1, &type, &internal_format)); |
| 7586 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), internal_format); | 7434 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), internal_format); |
| 7587 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); | 7435 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); |
| 7588 | 7436 |
| 7589 // Service ID is restored. | 7437 // Service ID is restored. |
| 7590 EXPECT_EQ(kServiceTextureId, texture->service_id()); | 7438 EXPECT_EQ(kServiceTextureId, texture->service_id()); |
| 7591 } | 7439 } |
| 7592 | 7440 |
| 7593 TEST_P(GLES2DecoderTest, CanChangeSurface) { | 7441 |
| 7442 TEST_F(GLES2DecoderTest, CanChangeSurface) { |
| 7594 scoped_refptr<GLSurfaceMock> other_surface(new GLSurfaceMock); | 7443 scoped_refptr<GLSurfaceMock> other_surface(new GLSurfaceMock); |
| 7595 EXPECT_CALL(*other_surface.get(), GetBackingFrameBufferObject()). | 7444 EXPECT_CALL(*other_surface.get(), GetBackingFrameBufferObject()). |
| 7596 WillOnce(Return(7)); | 7445 WillOnce(Return(7)); |
| 7597 EXPECT_CALL(*gl_, BindFramebufferEXT(GL_FRAMEBUFFER_EXT, 7)); | 7446 EXPECT_CALL(*gl_, BindFramebufferEXT(GL_FRAMEBUFFER_EXT, 7)); |
| 7598 | 7447 |
| 7599 decoder_->SetSurface(other_surface); | 7448 decoder_->SetSurface(other_surface); |
| 7600 } | 7449 } |
| 7601 | 7450 |
| 7602 TEST_P(GLES2DecoderTest, IsEnabledReturnsCachedValue) { | 7451 TEST_F(GLES2DecoderTest, IsEnabledReturnsCachedValue) { |
| 7603 // NOTE: There are no expectations because no GL functions should be | 7452 // NOTE: There are no expectations because no GL functions should be |
| 7604 // called for DEPTH_TEST or STENCIL_TEST | 7453 // called for DEPTH_TEST or STENCIL_TEST |
| 7605 static const GLenum kStates[] = { | 7454 static const GLenum kStates[] = { |
| 7606 GL_DEPTH_TEST, | 7455 GL_DEPTH_TEST, |
| 7607 GL_STENCIL_TEST, | 7456 GL_STENCIL_TEST, |
| 7608 }; | 7457 }; |
| 7609 for (size_t ii = 0; ii < arraysize(kStates); ++ii) { | 7458 for (size_t ii = 0; ii < arraysize(kStates); ++ii) { |
| 7610 Enable enable_cmd; | 7459 Enable enable_cmd; |
| 7611 GLenum state = kStates[ii]; | 7460 GLenum state = kStates[ii]; |
| 7612 enable_cmd.Init(state); | 7461 enable_cmd.Init(state); |
| 7613 EXPECT_EQ(error::kNoError, ExecuteCmd(enable_cmd)); | 7462 EXPECT_EQ(error::kNoError, ExecuteCmd(enable_cmd)); |
| 7614 IsEnabled::Result* result = | 7463 IsEnabled::Result* result = |
| 7615 static_cast<IsEnabled::Result*>(shared_memory_address_); | 7464 static_cast<IsEnabled::Result*>(shared_memory_address_); |
| 7616 IsEnabled is_enabled_cmd; | 7465 IsEnabled is_enabled_cmd; |
| 7617 is_enabled_cmd.Init(state, shared_memory_id_, shared_memory_offset_); | 7466 is_enabled_cmd.Init(state, shared_memory_id_, shared_memory_offset_); |
| 7618 EXPECT_EQ(error::kNoError, ExecuteCmd(is_enabled_cmd)); | 7467 EXPECT_EQ(error::kNoError, ExecuteCmd(is_enabled_cmd)); |
| 7619 EXPECT_NE(0u, *result); | 7468 EXPECT_NE(0u, *result); |
| 7620 Disable disable_cmd; | 7469 Disable disable_cmd; |
| 7621 disable_cmd.Init(state); | 7470 disable_cmd.Init(state); |
| 7622 EXPECT_EQ(error::kNoError, ExecuteCmd(disable_cmd)); | 7471 EXPECT_EQ(error::kNoError, ExecuteCmd(disable_cmd)); |
| 7623 EXPECT_EQ(error::kNoError, ExecuteCmd(is_enabled_cmd)); | 7472 EXPECT_EQ(error::kNoError, ExecuteCmd(is_enabled_cmd)); |
| 7624 EXPECT_EQ(0u, *result); | 7473 EXPECT_EQ(0u, *result); |
| 7625 } | 7474 } |
| 7626 } | 7475 } |
| 7627 | 7476 |
| 7628 TEST_P(GLES2DecoderManualInitTest, DepthTextureBadArgs) { | 7477 TEST_F(GLES2DecoderManualInitTest, DepthTextureBadArgs) { |
| 7629 InitState init; | 7478 InitState init; |
| 7630 init.extensions = "GL_ANGLE_depth_texture"; | 7479 init.extensions = "GL_ANGLE_depth_texture"; |
| 7631 init.gl_version = "opengl es 2.0"; | 7480 init.gl_version = "opengl es 2.0"; |
| 7632 init.has_depth = true; | 7481 init.has_depth = true; |
| 7633 init.has_stencil = true; | 7482 init.has_stencil = true; |
| 7634 init.request_depth = true; | 7483 init.request_depth = true; |
| 7635 init.request_stencil = true; | 7484 init.request_stencil = true; |
| 7636 init.bind_generates_resource = true; | 7485 init.bind_generates_resource = true; |
| 7637 InitDecoder(init); | 7486 InitDecoder(init); |
| 7638 | 7487 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7670 EXPECT_EQ(error::kNoError, ExecuteCmd(copy_tex_cmd)); | 7519 EXPECT_EQ(error::kNoError, ExecuteCmd(copy_tex_cmd)); |
| 7671 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 7520 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 7672 | 7521 |
| 7673 // Check that trying to CopyTexSubImage2D fails | 7522 // Check that trying to CopyTexSubImage2D fails |
| 7674 CopyTexSubImage2D copy_sub_cmd; | 7523 CopyTexSubImage2D copy_sub_cmd; |
| 7675 copy_sub_cmd.Init(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 1, 1); | 7524 copy_sub_cmd.Init(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 1, 1); |
| 7676 EXPECT_EQ(error::kNoError, ExecuteCmd(copy_sub_cmd)); | 7525 EXPECT_EQ(error::kNoError, ExecuteCmd(copy_sub_cmd)); |
| 7677 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 7526 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 7678 } | 7527 } |
| 7679 | 7528 |
| 7680 TEST_P(GLES2DecoderManualInitTest, GenerateMipmapDepthTexture) { | 7529 TEST_F(GLES2DecoderManualInitTest, GenerateMipmapDepthTexture) { |
| 7681 InitState init; | 7530 InitState init; |
| 7682 init.extensions = "GL_ANGLE_depth_texture"; | 7531 init.extensions = "GL_ANGLE_depth_texture"; |
| 7683 init.gl_version = "opengl es 2.0"; | 7532 init.gl_version = "opengl es 2.0"; |
| 7684 init.has_depth = true; | 7533 init.has_depth = true; |
| 7685 init.has_stencil = true; | 7534 init.has_stencil = true; |
| 7686 init.request_depth = true; | 7535 init.request_depth = true; |
| 7687 init.request_stencil = true; | 7536 init.request_stencil = true; |
| 7688 init.bind_generates_resource = true; | 7537 init.bind_generates_resource = true; |
| 7689 InitDecoder(init); | 7538 InitDecoder(init); |
| 7690 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 7539 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 7691 DoTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, | 7540 DoTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, |
| 7692 2, 2, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, | 7541 2, 2, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, |
| 7693 0, 0); | 7542 0, 0); |
| 7694 GenerateMipmap cmd; | 7543 GenerateMipmap cmd; |
| 7695 cmd.Init(GL_TEXTURE_2D); | 7544 cmd.Init(GL_TEXTURE_2D); |
| 7696 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 7545 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 7697 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 7546 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 7698 } | 7547 } |
| 7699 | 7548 |
| 7700 TEST_P(GLES2DecoderManualInitTest, DrawClearsDepthTexture) { | 7549 TEST_F(GLES2DecoderManualInitTest, DrawClearsDepthTexture) { |
| 7701 InitState init; | 7550 InitState init; |
| 7702 init.extensions = "GL_ANGLE_depth_texture"; | 7551 init.extensions = "GL_ANGLE_depth_texture"; |
| 7703 init.gl_version = "opengl es 2.0"; | 7552 init.gl_version = "opengl es 2.0"; |
| 7704 init.has_alpha = true; | 7553 init.has_alpha = true; |
| 7705 init.has_depth = true; | 7554 init.has_depth = true; |
| 7706 init.request_alpha = true; | 7555 init.request_alpha = true; |
| 7707 init.request_depth = true; | 7556 init.request_depth = true; |
| 7708 init.bind_generates_resource = true; | 7557 init.bind_generates_resource = true; |
| 7709 InitDecoder(init); | 7558 InitDecoder(init); |
| 7710 | 7559 |
| 7711 SetupDefaultProgram(); | 7560 SetupDefaultProgram(); |
| 7712 SetupAllNeededVertexBuffers(); | 7561 SetupAllNeededVertexBuffers(); |
| 7713 const GLenum attachment = GL_DEPTH_ATTACHMENT; | 7562 const GLenum attachment = GL_DEPTH_ATTACHMENT; |
| 7714 const GLenum target = GL_TEXTURE_2D; | 7563 const GLenum target = GL_TEXTURE_2D; |
| 7715 const GLint level = 0; | 7564 const GLint level = 0; |
| 7716 DoBindTexture(target, client_texture_id_, kServiceTextureId); | 7565 DoBindTexture(target, client_texture_id_, kServiceTextureId); |
| 7717 | 7566 |
| 7718 // Create a depth texture. | 7567 // Create a depth texture. |
| 7719 DoTexImage2D(target, level, GL_DEPTH_COMPONENT, 1, 1, 0, | 7568 DoTexImage2D(target, level, GL_DEPTH_COMPONENT, 1, 1, 0, |
| 7720 GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, 0, 0); | 7569 GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, 0, 0); |
| 7721 | 7570 |
| 7722 // Enable GL_SCISSOR_TEST to make sure we disable it in the clear, | |
| 7723 // then re-enable it. | |
| 7724 DoEnableDisable(GL_SCISSOR_TEST, true); | |
| 7725 | |
| 7726 EXPECT_CALL(*gl_, GenFramebuffersEXT(1, _)) | 7571 EXPECT_CALL(*gl_, GenFramebuffersEXT(1, _)) |
| 7727 .Times(1) | 7572 .Times(1) |
| 7728 .RetiresOnSaturation(); | 7573 .RetiresOnSaturation(); |
| 7729 EXPECT_CALL(*gl_, BindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, _)) | 7574 EXPECT_CALL(*gl_, BindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, _)) |
| 7730 .Times(1) | 7575 .Times(1) |
| 7731 .RetiresOnSaturation(); | 7576 .RetiresOnSaturation(); |
| 7732 | 7577 |
| 7733 EXPECT_CALL(*gl_, FramebufferTexture2DEXT( | 7578 EXPECT_CALL(*gl_, FramebufferTexture2DEXT( |
| 7734 GL_DRAW_FRAMEBUFFER_EXT, attachment, target, kServiceTextureId, level)) | 7579 GL_DRAW_FRAMEBUFFER_EXT, attachment, target, kServiceTextureId, level)) |
| 7735 .Times(1) | 7580 .Times(1) |
| 7736 .RetiresOnSaturation(); | 7581 .RetiresOnSaturation(); |
| 7737 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER_EXT)) | 7582 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER_EXT)) |
| 7738 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) | 7583 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) |
| 7739 .RetiresOnSaturation(); | 7584 .RetiresOnSaturation(); |
| 7740 | 7585 |
| 7741 EXPECT_CALL(*gl_, ClearStencil(0)) | 7586 EXPECT_CALL(*gl_, ClearStencil(0)) |
| 7742 .Times(1) | 7587 .Times(1) |
| 7743 .RetiresOnSaturation(); | 7588 .RetiresOnSaturation(); |
| 7744 EXPECT_CALL(*gl_, StencilMask(-1)) | 7589 EXPECT_CALL(*gl_, StencilMask(-1)) |
| 7745 .Times(1) | 7590 .Times(1) |
| 7746 .RetiresOnSaturation(); | 7591 .RetiresOnSaturation(); |
| 7747 EXPECT_CALL(*gl_, ClearDepth(1.0f)) | 7592 EXPECT_CALL(*gl_, ClearDepth(1.0f)) |
| 7748 .Times(1) | 7593 .Times(1) |
| 7749 .RetiresOnSaturation(); | 7594 .RetiresOnSaturation(); |
| 7750 SetupExpectationsForDepthMask(true); | 7595 EXPECT_CALL(*gl_, DepthMask(true)) |
| 7751 SetupExpectationsForEnableDisable(GL_SCISSOR_TEST, false); | 7596 .Times(1) |
| 7597 .RetiresOnSaturation(); |
| 7598 EXPECT_CALL(*gl_, Disable(GL_SCISSOR_TEST)) |
| 7599 .Times(1) |
| 7600 .RetiresOnSaturation(); |
| 7752 | 7601 |
| 7753 EXPECT_CALL(*gl_, Clear(GL_DEPTH_BUFFER_BIT)) | 7602 EXPECT_CALL(*gl_, Clear(GL_DEPTH_BUFFER_BIT)) |
| 7754 .Times(1) | 7603 .Times(1) |
| 7755 .RetiresOnSaturation(); | 7604 .RetiresOnSaturation(); |
| 7756 | 7605 |
| 7757 SetupExpectationsForRestoreClearState(0.0f, 0.0f, 0.0f, 0.0f, 0, 1.0f, true); | 7606 SetupExpectationsForRestoreClearState( |
| 7607 0.0f, 0.0f, 0.0f, 0.0f, 0, 1.0f, false); |
| 7758 | 7608 |
| 7759 EXPECT_CALL(*gl_, DeleteFramebuffersEXT(1, _)) | 7609 EXPECT_CALL(*gl_, DeleteFramebuffersEXT(1, _)) |
| 7760 .Times(1) | 7610 .Times(1) |
| 7761 .RetiresOnSaturation(); | 7611 .RetiresOnSaturation(); |
| 7762 EXPECT_CALL(*gl_, BindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, 0)) | 7612 EXPECT_CALL(*gl_, BindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, 0)) |
| 7763 .Times(1) | 7613 .Times(1) |
| 7764 .RetiresOnSaturation(); | 7614 .RetiresOnSaturation(); |
| 7765 | 7615 |
| 7766 SetupExpectationsForApplyingDefaultDirtyState(); | 7616 SetupExpectationsForApplyingDefaultDirtyState(); |
| 7767 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) | 7617 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) |
| 7768 .Times(1) | 7618 .Times(1) |
| 7769 .RetiresOnSaturation(); | 7619 .RetiresOnSaturation(); |
| 7770 DrawArrays cmd; | 7620 DrawArrays cmd; |
| 7771 cmd.Init(GL_TRIANGLES, 0, kNumVertices); | 7621 cmd.Init(GL_TRIANGLES, 0, kNumVertices); |
| 7772 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 7622 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 7773 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 7623 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 7774 } | 7624 } |
| 7775 | 7625 |
| 7776 TEST_P(GLES2DecoderWithShaderTest, BindUniformLocationCHROMIUM) { | 7626 TEST_F(GLES2DecoderWithShaderTest, BindUniformLocationCHROMIUM) { |
| 7777 const GLint kLocation = 2; | 7627 const GLint kLocation = 2; |
| 7778 const char* kName = "testing"; | 7628 const char* kName = "testing"; |
| 7779 const uint32 kNameSize = strlen(kName); | 7629 const uint32 kNameSize = strlen(kName); |
| 7780 const char* kBadName1 = "gl_testing"; | 7630 const char* kBadName1 = "gl_testing"; |
| 7781 const uint32 kBadName1Size = strlen(kBadName1); | 7631 const uint32 kBadName1Size = strlen(kBadName1); |
| 7782 const char* kBadName2 = "testing[1]"; | 7632 const char* kBadName2 = "testing[1]"; |
| 7783 const uint32 kBadName2Size = strlen(kBadName2); | 7633 const uint32 kBadName2Size = strlen(kBadName2); |
| 7784 memcpy(shared_memory_address_, kName, kNameSize); | 7634 memcpy(shared_memory_address_, kName, kNameSize); |
| 7785 BindUniformLocationCHROMIUM cmd; | 7635 BindUniformLocationCHROMIUM cmd; |
| 7786 cmd.Init(client_program_id_, kLocation, kSharedMemoryId, kSharedMemoryOffset, | 7636 cmd.Init(client_program_id_, kLocation, kSharedMemoryId, kSharedMemoryOffset, |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7995 SetupDefaultProgram(); | 7845 SetupDefaultProgram(); |
| 7996 | 7846 |
| 7997 AddExpectationsForGenVertexArraysOES(); | 7847 AddExpectationsForGenVertexArraysOES(); |
| 7998 GenHelper<GenVertexArraysOESImmediate>(client_vertexarray_id_); | 7848 GenHelper<GenVertexArraysOESImmediate>(client_vertexarray_id_); |
| 7999 | 7849 |
| 8000 vertex_array_deleted_manually_ = false; | 7850 vertex_array_deleted_manually_ = false; |
| 8001 } | 7851 } |
| 8002 }; | 7852 }; |
| 8003 | 7853 |
| 8004 // Test vertex array objects with native support | 7854 // Test vertex array objects with native support |
| 8005 TEST_P(GLES2DecoderVertexArraysOESTest, GenVertexArraysOESValidArgs) { | 7855 TEST_F(GLES2DecoderVertexArraysOESTest, GenVertexArraysOESValidArgs) { |
| 8006 GenVertexArraysOESValidArgs(); | 7856 GenVertexArraysOESValidArgs(); |
| 8007 } | 7857 } |
| 8008 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, GenVertexArraysOESValidArgs) { | 7858 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, GenVertexArraysOESValidArgs) { |
| 8009 GenVertexArraysOESValidArgs(); | 7859 GenVertexArraysOESValidArgs(); |
| 8010 } | 7860 } |
| 8011 | 7861 |
| 8012 TEST_P(GLES2DecoderVertexArraysOESTest, GenVertexArraysOESInvalidArgs) { | 7862 TEST_F(GLES2DecoderVertexArraysOESTest, GenVertexArraysOESInvalidArgs) { |
| 8013 GenVertexArraysOESInvalidArgs(); | 7863 GenVertexArraysOESInvalidArgs(); |
| 8014 } | 7864 } |
| 8015 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, ) { | 7865 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, ) { |
| 8016 GenVertexArraysOESInvalidArgs(); | 7866 GenVertexArraysOESInvalidArgs(); |
| 8017 } | 7867 } |
| 8018 | 7868 |
| 8019 TEST_P(GLES2DecoderVertexArraysOESTest, GenVertexArraysOESImmediateValidArgs) { | 7869 TEST_F(GLES2DecoderVertexArraysOESTest, GenVertexArraysOESImmediateValidArgs) { |
| 8020 GenVertexArraysOESImmediateValidArgs(); | 7870 GenVertexArraysOESImmediateValidArgs(); |
| 8021 } | 7871 } |
| 8022 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, | 7872 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, |
| 8023 GenVertexArraysOESImmediateValidArgs) { | 7873 GenVertexArraysOESImmediateValidArgs) { |
| 8024 GenVertexArraysOESImmediateValidArgs(); | 7874 GenVertexArraysOESImmediateValidArgs(); |
| 8025 } | 7875 } |
| 8026 | 7876 |
| 8027 TEST_P(GLES2DecoderVertexArraysOESTest, | 7877 TEST_F(GLES2DecoderVertexArraysOESTest, |
| 8028 GenVertexArraysOESImmediateInvalidArgs) { | 7878 GenVertexArraysOESImmediateInvalidArgs) { |
| 8029 GenVertexArraysOESImmediateInvalidArgs(); | 7879 GenVertexArraysOESImmediateInvalidArgs(); |
| 8030 } | 7880 } |
| 8031 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, | 7881 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, |
| 8032 GenVertexArraysOESImmediateInvalidArgs) { | 7882 GenVertexArraysOESImmediateInvalidArgs) { |
| 8033 GenVertexArraysOESImmediateInvalidArgs(); | 7883 GenVertexArraysOESImmediateInvalidArgs(); |
| 8034 } | 7884 } |
| 8035 | 7885 |
| 8036 TEST_P(GLES2DecoderVertexArraysOESTest, DeleteVertexArraysOESValidArgs) { | 7886 TEST_F(GLES2DecoderVertexArraysOESTest, DeleteVertexArraysOESValidArgs) { |
| 8037 DeleteVertexArraysOESValidArgs(); | 7887 DeleteVertexArraysOESValidArgs(); |
| 8038 } | 7888 } |
| 8039 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, | 7889 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, |
| 8040 DeleteVertexArraysOESValidArgs) { | 7890 DeleteVertexArraysOESValidArgs) { |
| 8041 DeleteVertexArraysOESValidArgs(); | 7891 DeleteVertexArraysOESValidArgs(); |
| 8042 } | 7892 } |
| 8043 | 7893 |
| 8044 TEST_P(GLES2DecoderVertexArraysOESTest, DeleteVertexArraysOESInvalidArgs) { | 7894 TEST_F(GLES2DecoderVertexArraysOESTest, DeleteVertexArraysOESInvalidArgs) { |
| 8045 DeleteVertexArraysOESInvalidArgs(); | 7895 DeleteVertexArraysOESInvalidArgs(); |
| 8046 } | 7896 } |
| 8047 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, | 7897 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, |
| 8048 DeleteVertexArraysOESInvalidArgs) { | 7898 DeleteVertexArraysOESInvalidArgs) { |
| 8049 DeleteVertexArraysOESInvalidArgs(); | 7899 DeleteVertexArraysOESInvalidArgs(); |
| 8050 } | 7900 } |
| 8051 | 7901 |
| 8052 TEST_P(GLES2DecoderVertexArraysOESTest, | 7902 TEST_F(GLES2DecoderVertexArraysOESTest, |
| 8053 DeleteVertexArraysOESImmediateValidArgs) { | 7903 DeleteVertexArraysOESImmediateValidArgs) { |
| 8054 DeleteVertexArraysOESImmediateValidArgs(); | 7904 DeleteVertexArraysOESImmediateValidArgs(); |
| 8055 } | 7905 } |
| 8056 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, | 7906 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, |
| 8057 DeleteVertexArraysOESImmediateValidArgs) { | 7907 DeleteVertexArraysOESImmediateValidArgs) { |
| 8058 DeleteVertexArraysOESImmediateValidArgs(); | 7908 DeleteVertexArraysOESImmediateValidArgs(); |
| 8059 } | 7909 } |
| 8060 | 7910 |
| 8061 TEST_P(GLES2DecoderVertexArraysOESTest, | 7911 TEST_F(GLES2DecoderVertexArraysOESTest, |
| 8062 DeleteVertexArraysOESImmediateInvalidArgs) { | 7912 DeleteVertexArraysOESImmediateInvalidArgs) { |
| 8063 DeleteVertexArraysOESImmediateInvalidArgs(); | 7913 DeleteVertexArraysOESImmediateInvalidArgs(); |
| 8064 } | 7914 } |
| 8065 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, | 7915 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, |
| 8066 DeleteVertexArraysOESImmediateInvalidArgs) { | 7916 DeleteVertexArraysOESImmediateInvalidArgs) { |
| 8067 DeleteVertexArraysOESImmediateInvalidArgs(); | 7917 DeleteVertexArraysOESImmediateInvalidArgs(); |
| 8068 } | 7918 } |
| 8069 | 7919 |
| 8070 TEST_P(GLES2DecoderVertexArraysOESTest, | 7920 TEST_F(GLES2DecoderVertexArraysOESTest, |
| 8071 DeleteBoundVertexArraysOESImmediateValidArgs) { | 7921 DeleteBoundVertexArraysOESImmediateValidArgs) { |
| 8072 DeleteBoundVertexArraysOESImmediateValidArgs(); | 7922 DeleteBoundVertexArraysOESImmediateValidArgs(); |
| 8073 } | 7923 } |
| 8074 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, | 7924 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, |
| 8075 DeleteBoundVertexArraysOESImmediateValidArgs) { | 7925 DeleteBoundVertexArraysOESImmediateValidArgs) { |
| 8076 DeleteBoundVertexArraysOESImmediateValidArgs(); | 7926 DeleteBoundVertexArraysOESImmediateValidArgs(); |
| 8077 } | 7927 } |
| 8078 | 7928 |
| 8079 TEST_P(GLES2DecoderVertexArraysOESTest, IsVertexArrayOESValidArgs) { | 7929 TEST_F(GLES2DecoderVertexArraysOESTest, IsVertexArrayOESValidArgs) { |
| 8080 IsVertexArrayOESValidArgs(); | 7930 IsVertexArrayOESValidArgs(); |
| 8081 } | 7931 } |
| 8082 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, IsVertexArrayOESValidArgs) { | 7932 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, IsVertexArrayOESValidArgs) { |
| 8083 IsVertexArrayOESValidArgs(); | 7933 IsVertexArrayOESValidArgs(); |
| 8084 } | 7934 } |
| 8085 | 7935 |
| 8086 TEST_P(GLES2DecoderVertexArraysOESTest, | 7936 TEST_F(GLES2DecoderVertexArraysOESTest, |
| 8087 IsVertexArrayOESInvalidArgsBadSharedMemoryId) { | 7937 IsVertexArrayOESInvalidArgsBadSharedMemoryId) { |
| 8088 IsVertexArrayOESInvalidArgsBadSharedMemoryId(); | 7938 IsVertexArrayOESInvalidArgsBadSharedMemoryId(); |
| 8089 } | 7939 } |
| 8090 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, | 7940 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, |
| 8091 IsVertexArrayOESInvalidArgsBadSharedMemoryId) { | 7941 IsVertexArrayOESInvalidArgsBadSharedMemoryId) { |
| 8092 IsVertexArrayOESInvalidArgsBadSharedMemoryId(); | 7942 IsVertexArrayOESInvalidArgsBadSharedMemoryId(); |
| 8093 } | 7943 } |
| 8094 | 7944 |
| 8095 TEST_P(GLES2DecoderVertexArraysOESTest, BindVertexArrayOESValidArgs) { | 7945 TEST_F(GLES2DecoderVertexArraysOESTest, BindVertexArrayOESValidArgs) { |
| 8096 BindVertexArrayOESValidArgs(); | 7946 BindVertexArrayOESValidArgs(); |
| 8097 } | 7947 } |
| 8098 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, BindVertexArrayOESValidArgs) { | 7948 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, BindVertexArrayOESValidArgs) { |
| 8099 BindVertexArrayOESValidArgs(); | 7949 BindVertexArrayOESValidArgs(); |
| 8100 } | 7950 } |
| 8101 | 7951 |
| 8102 TEST_P(GLES2DecoderVertexArraysOESTest, BindVertexArrayOESValidArgsNewId) { | 7952 TEST_F(GLES2DecoderVertexArraysOESTest, BindVertexArrayOESValidArgsNewId) { |
| 8103 BindVertexArrayOESValidArgsNewId(); | 7953 BindVertexArrayOESValidArgsNewId(); |
| 8104 } | 7954 } |
| 8105 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, | 7955 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, |
| 8106 BindVertexArrayOESValidArgsNewId) { | 7956 BindVertexArrayOESValidArgsNewId) { |
| 8107 BindVertexArrayOESValidArgsNewId(); | 7957 BindVertexArrayOESValidArgsNewId(); |
| 8108 } | 7958 } |
| 8109 | 7959 |
| 8110 TEST_P(GLES2DecoderTest, BindTexImage2DCHROMIUM) { | 7960 TEST_F(GLES2DecoderTest, BindTexImage2DCHROMIUM) { |
| 8111 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 7961 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 8112 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 7962 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 8113 0, 0); | 7963 0, 0); |
| 8114 TextureRef* texture_ref = group().texture_manager()->GetTexture( | 7964 TextureRef* texture_ref = group().texture_manager()->GetTexture( |
| 8115 client_texture_id_); | 7965 client_texture_id_); |
| 8116 ASSERT_TRUE(texture_ref != NULL); | 7966 ASSERT_TRUE(texture_ref != NULL); |
| 8117 Texture* texture = texture_ref->texture(); | 7967 Texture* texture = texture_ref->texture(); |
| 8118 EXPECT_EQ(kServiceTextureId, texture->service_id()); | 7968 EXPECT_EQ(kServiceTextureId, texture->service_id()); |
| 8119 | 7969 |
| 8120 group().image_manager()->AddImage(gfx::GLImage::CreateGLImage(0).get(), 1); | 7970 group().image_manager()->AddImage(gfx::GLImage::CreateGLImage(0).get(), 1); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 8147 EXPECT_FALSE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL); | 7997 EXPECT_FALSE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL); |
| 8148 | 7998 |
| 8149 // Define new texture image. | 7999 // Define new texture image. |
| 8150 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 8000 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 8151 0, 0); | 8001 0, 0); |
| 8152 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); | 8002 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); |
| 8153 // Image should no longer be set. | 8003 // Image should no longer be set. |
| 8154 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL); | 8004 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL); |
| 8155 } | 8005 } |
| 8156 | 8006 |
| 8157 TEST_P(GLES2DecoderTest, BindTexImage2DCHROMIUMCubeMapNotAllowed) { | 8007 TEST_F(GLES2DecoderTest, BindTexImage2DCHROMIUMCubeMapNotAllowed) { |
| 8158 group().image_manager()->AddImage(gfx::GLImage::CreateGLImage(0).get(), 1); | 8008 group().image_manager()->AddImage(gfx::GLImage::CreateGLImage(0).get(), 1); |
| 8159 DoBindTexture(GL_TEXTURE_CUBE_MAP, client_texture_id_, kServiceTextureId); | 8009 DoBindTexture(GL_TEXTURE_CUBE_MAP, client_texture_id_, kServiceTextureId); |
| 8160 | 8010 |
| 8161 BindTexImage2DCHROMIUM bind_tex_image_2d_cmd; | 8011 BindTexImage2DCHROMIUM bind_tex_image_2d_cmd; |
| 8162 bind_tex_image_2d_cmd.Init(GL_TEXTURE_CUBE_MAP, 1); | 8012 bind_tex_image_2d_cmd.Init(GL_TEXTURE_CUBE_MAP, 1); |
| 8163 EXPECT_EQ(error::kNoError, ExecuteCmd(bind_tex_image_2d_cmd)); | 8013 EXPECT_EQ(error::kNoError, ExecuteCmd(bind_tex_image_2d_cmd)); |
| 8164 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 8014 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 8165 } | 8015 } |
| 8166 | 8016 |
| 8167 TEST_P(GLES2DecoderTest, OrphanGLImageWithTexImage2D) { | 8017 TEST_F(GLES2DecoderTest, OrphanGLImageWithTexImage2D) { |
| 8168 group().image_manager()->AddImage(gfx::GLImage::CreateGLImage(0).get(), 1); | 8018 group().image_manager()->AddImage(gfx::GLImage::CreateGLImage(0).get(), 1); |
| 8169 DoBindTexture(GL_TEXTURE_CUBE_MAP, client_texture_id_, kServiceTextureId); | 8019 DoBindTexture(GL_TEXTURE_CUBE_MAP, client_texture_id_, kServiceTextureId); |
| 8170 | 8020 |
| 8171 BindTexImage2DCHROMIUM bind_tex_image_2d_cmd; | 8021 BindTexImage2DCHROMIUM bind_tex_image_2d_cmd; |
| 8172 bind_tex_image_2d_cmd.Init(GL_TEXTURE_CUBE_MAP, 1); | 8022 bind_tex_image_2d_cmd.Init(GL_TEXTURE_CUBE_MAP, 1); |
| 8173 EXPECT_EQ(error::kNoError, ExecuteCmd(bind_tex_image_2d_cmd)); | 8023 EXPECT_EQ(error::kNoError, ExecuteCmd(bind_tex_image_2d_cmd)); |
| 8174 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 8024 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 8175 | 8025 |
| 8176 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 8026 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 8177 0, 0); | 8027 0, 0); |
| 8178 TextureRef* texture_ref = group().texture_manager()->GetTexture( | 8028 TextureRef* texture_ref = group().texture_manager()->GetTexture( |
| 8179 client_texture_id_); | 8029 client_texture_id_); |
| 8180 ASSERT_TRUE(texture_ref != NULL); | 8030 ASSERT_TRUE(texture_ref != NULL); |
| 8181 Texture* texture = texture_ref->texture(); | 8031 Texture* texture = texture_ref->texture(); |
| 8182 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL); | 8032 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 0) == NULL); |
| 8183 } | 8033 } |
| 8184 | 8034 |
| 8185 TEST_P(GLES2DecoderTest, ReleaseTexImage2DCHROMIUM) { | 8035 TEST_F(GLES2DecoderTest, ReleaseTexImage2DCHROMIUM) { |
| 8186 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 8036 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 8187 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 8037 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 8188 0, 0); | 8038 0, 0); |
| 8189 TextureRef* texture_ref = group().texture_manager()->GetTexture( | 8039 TextureRef* texture_ref = group().texture_manager()->GetTexture( |
| 8190 client_texture_id_); | 8040 client_texture_id_); |
| 8191 ASSERT_TRUE(texture_ref != NULL); | 8041 ASSERT_TRUE(texture_ref != NULL); |
| 8192 Texture* texture = texture_ref->texture(); | 8042 Texture* texture = texture_ref->texture(); |
| 8193 EXPECT_EQ(kServiceTextureId, texture->service_id()); | 8043 EXPECT_EQ(kServiceTextureId, texture->service_id()); |
| 8194 | 8044 |
| 8195 group().image_manager()->AddImage(gfx::GLImage::CreateGLImage(0).get(), 1); | 8045 group().image_manager()->AddImage(gfx::GLImage::CreateGLImage(0).get(), 1); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8246 MOCK_METHOD1(ReleaseTexImage, void(unsigned)); | 8096 MOCK_METHOD1(ReleaseTexImage, void(unsigned)); |
| 8247 MOCK_METHOD0(WillUseTexImage, void()); | 8097 MOCK_METHOD0(WillUseTexImage, void()); |
| 8248 MOCK_METHOD0(DidUseTexImage, void()); | 8098 MOCK_METHOD0(DidUseTexImage, void()); |
| 8249 MOCK_METHOD0(WillModifyTexImage, void()); | 8099 MOCK_METHOD0(WillModifyTexImage, void()); |
| 8250 MOCK_METHOD0(DidModifyTexImage, void()); | 8100 MOCK_METHOD0(DidModifyTexImage, void()); |
| 8251 | 8101 |
| 8252 protected: | 8102 protected: |
| 8253 virtual ~MockGLImage() {} | 8103 virtual ~MockGLImage() {} |
| 8254 }; | 8104 }; |
| 8255 | 8105 |
| 8256 TEST_P(GLES2DecoderWithShaderTest, UseTexImage) { | 8106 TEST_F(GLES2DecoderWithShaderTest, UseTexImage) { |
| 8257 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 8107 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 8258 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 8108 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 8259 kSharedMemoryId, kSharedMemoryOffset); | 8109 kSharedMemoryId, kSharedMemoryOffset); |
| 8260 | 8110 |
| 8261 TextureRef* texture_ref = group().texture_manager()->GetTexture( | 8111 TextureRef* texture_ref = group().texture_manager()->GetTexture( |
| 8262 client_texture_id_); | 8112 client_texture_id_); |
| 8263 ASSERT_TRUE(texture_ref != NULL); | 8113 ASSERT_TRUE(texture_ref != NULL); |
| 8264 Texture* texture = texture_ref->texture(); | 8114 Texture* texture = texture_ref->texture(); |
| 8265 EXPECT_EQ(kServiceTextureId, texture->service_id()); | 8115 EXPECT_EQ(kServiceTextureId, texture->service_id()); |
| 8266 | 8116 |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8370 .WillOnce(Return(GL_NO_ERROR)) | 8220 .WillOnce(Return(GL_NO_ERROR)) |
| 8371 .WillOnce(Return(GL_NO_ERROR)) | 8221 .WillOnce(Return(GL_NO_ERROR)) |
| 8372 .RetiresOnSaturation(); | 8222 .RetiresOnSaturation(); |
| 8373 FramebufferRenderbuffer fbrb_cmd; | 8223 FramebufferRenderbuffer fbrb_cmd; |
| 8374 fbrb_cmd.Init( | 8224 fbrb_cmd.Init( |
| 8375 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, | 8225 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, |
| 8376 client_renderbuffer_id_); | 8226 client_renderbuffer_id_); |
| 8377 EXPECT_EQ(error::kNoError, ExecuteCmd(fbrb_cmd)); | 8227 EXPECT_EQ(error::kNoError, ExecuteCmd(fbrb_cmd)); |
| 8378 } | 8228 } |
| 8379 | 8229 |
| 8380 TEST_P(GLES2DecoderManualInitTest, DrawWithGLImageExternal) { | 8230 TEST_F(GLES2DecoderManualInitTest, DrawWithGLImageExternal) { |
| 8381 InitState init; | 8231 InitState init; |
| 8382 init.extensions = "GL_OES_EGL_image_external"; | 8232 init.extensions = "GL_OES_EGL_image_external"; |
| 8383 init.gl_version = "opengl es 2.0"; | 8233 init.gl_version = "opengl es 2.0"; |
| 8384 init.has_alpha = true; | 8234 init.has_alpha = true; |
| 8385 init.has_depth = true; | 8235 init.has_depth = true; |
| 8386 init.request_alpha = true; | 8236 init.request_alpha = true; |
| 8387 init.request_depth = true; | 8237 init.request_depth = true; |
| 8388 init.bind_generates_resource = true; | 8238 init.bind_generates_resource = true; |
| 8389 InitDecoder(init); | 8239 InitDecoder(init); |
| 8390 | 8240 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8444 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE0)) | 8294 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE0)) |
| 8445 .Times(1) | 8295 .Times(1) |
| 8446 .RetiresOnSaturation(); | 8296 .RetiresOnSaturation(); |
| 8447 DrawElements cmd; | 8297 DrawElements cmd; |
| 8448 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, | 8298 cmd.Init(GL_TRIANGLES, kValidIndexRangeCount, GL_UNSIGNED_SHORT, |
| 8449 kValidIndexRangeStart * 2); | 8299 kValidIndexRangeStart * 2); |
| 8450 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 8300 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 8451 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 8301 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 8452 } | 8302 } |
| 8453 | 8303 |
| 8454 TEST_P(GLES2DecoderManualInitTest, GpuMemoryManagerCHROMIUM) { | 8304 TEST_F(GLES2DecoderManualInitTest, GpuMemoryManagerCHROMIUM) { |
| 8455 InitState init; | 8305 InitState init; |
| 8456 init.extensions = "GL_ARB_texture_rectangle"; | 8306 init.extensions = "GL_ARB_texture_rectangle"; |
| 8457 init.gl_version = "3.0"; | 8307 init.gl_version = "3.0"; |
| 8458 init.bind_generates_resource = true; | 8308 init.bind_generates_resource = true; |
| 8459 InitDecoder(init); | 8309 InitDecoder(init); |
| 8460 | 8310 |
| 8461 Texture* texture = GetTexture(client_texture_id_)->texture(); | 8311 Texture* texture = GetTexture(client_texture_id_)->texture(); |
| 8462 EXPECT_TRUE(texture != NULL); | 8312 EXPECT_TRUE(texture != NULL); |
| 8463 EXPECT_TRUE(texture->pool() == GL_TEXTURE_POOL_UNMANAGED_CHROMIUM); | 8313 EXPECT_TRUE(texture->pool() == GL_TEXTURE_POOL_UNMANAGED_CHROMIUM); |
| 8464 | 8314 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 8480 | 8330 |
| 8481 EXPECT_TRUE(texture->pool() == GL_TEXTURE_POOL_MANAGED_CHROMIUM); | 8331 EXPECT_TRUE(texture->pool() == GL_TEXTURE_POOL_MANAGED_CHROMIUM); |
| 8482 | 8332 |
| 8483 cmd.Init(GL_TEXTURE_2D, | 8333 cmd.Init(GL_TEXTURE_2D, |
| 8484 GL_TEXTURE_POOL_CHROMIUM, | 8334 GL_TEXTURE_POOL_CHROMIUM, |
| 8485 GL_NONE); | 8335 GL_NONE); |
| 8486 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 8336 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 8487 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 8337 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
| 8488 } | 8338 } |
| 8489 | 8339 |
| 8490 TEST_P(GLES2DecoderManualInitTest, AsyncPixelTransfers) { | 8340 TEST_F(GLES2DecoderManualInitTest, AsyncPixelTransfers) { |
| 8491 InitState init; | 8341 InitState init; |
| 8492 init.extensions = "GL_CHROMIUM_async_pixel_transfers"; | 8342 init.extensions = "GL_CHROMIUM_async_pixel_transfers"; |
| 8493 init.gl_version = "3.0"; | 8343 init.gl_version = "3.0"; |
| 8494 init.bind_generates_resource = true; | 8344 init.bind_generates_resource = true; |
| 8495 InitDecoder(init); | 8345 InitDecoder(init); |
| 8496 | 8346 |
| 8497 // Set up the texture. | 8347 // Set up the texture. |
| 8498 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 8348 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 8499 TextureRef* texture_ref = GetTexture(client_texture_id_); | 8349 TextureRef* texture_ref = GetTexture(client_texture_id_); |
| 8500 Texture* texture = texture_ref->texture(); | 8350 Texture* texture = texture_ref->texture(); |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8727 EXPECT_EQ(error::kNoError, ExecuteCmd(wait_all_cmd)); | 8577 EXPECT_EQ(error::kNoError, ExecuteCmd(wait_all_cmd)); |
| 8728 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 8578 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 8729 } | 8579 } |
| 8730 | 8580 |
| 8731 // Remove PixelTransferManager before the decoder destroys. | 8581 // Remove PixelTransferManager before the decoder destroys. |
| 8732 EXPECT_CALL(*delegate, Destroy()).RetiresOnSaturation(); | 8582 EXPECT_CALL(*delegate, Destroy()).RetiresOnSaturation(); |
| 8733 decoder_->ResetAsyncPixelTransferManagerForTest(); | 8583 decoder_->ResetAsyncPixelTransferManagerForTest(); |
| 8734 manager = NULL; | 8584 manager = NULL; |
| 8735 } | 8585 } |
| 8736 | 8586 |
| 8737 TEST_P(GLES2DecoderManualInitTest, AsyncPixelTransferManager) { | 8587 TEST_F(GLES2DecoderManualInitTest, AsyncPixelTransferManager) { |
| 8738 InitState init; | 8588 InitState init; |
| 8739 init.extensions = "GL_CHROMIUM_async_pixel_transfers"; | 8589 init.extensions = "GL_CHROMIUM_async_pixel_transfers"; |
| 8740 init.gl_version = "3.0"; | 8590 init.gl_version = "3.0"; |
| 8741 init.bind_generates_resource = true; | 8591 init.bind_generates_resource = true; |
| 8742 InitDecoder(init); | 8592 InitDecoder(init); |
| 8743 | 8593 |
| 8744 // Set up the texture. | 8594 // Set up the texture. |
| 8745 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 8595 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 8746 TextureRef* texture_ref = GetTexture(client_texture_id_); | 8596 TextureRef* texture_ref = GetTexture(client_texture_id_); |
| 8747 | 8597 |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8831 size(0) { | 8681 size(0) { |
| 8832 } | 8682 } |
| 8833 size_t initial_size; | 8683 size_t initial_size; |
| 8834 size_t size; | 8684 size_t size; |
| 8835 }; | 8685 }; |
| 8836 std::map<Pool, PoolInfo> pool_infos_; | 8686 std::map<Pool, PoolInfo> pool_infos_; |
| 8837 }; | 8687 }; |
| 8838 | 8688 |
| 8839 } // anonymous namespace. | 8689 } // anonymous namespace. |
| 8840 | 8690 |
| 8841 TEST_P(GLES2DecoderManualInitTest, MemoryTrackerInitialSize) { | 8691 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerInitialSize) { |
| 8842 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = | 8692 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = |
| 8843 new SizeOnlyMemoryTracker(); | 8693 new SizeOnlyMemoryTracker(); |
| 8844 set_memory_tracker(memory_tracker.get()); | 8694 set_memory_tracker(memory_tracker.get()); |
| 8845 InitState init; | 8695 InitState init; |
| 8846 init.gl_version = "3.0"; | 8696 init.gl_version = "3.0"; |
| 8847 init.bind_generates_resource = true; | 8697 init.bind_generates_resource = true; |
| 8848 InitDecoder(init); | 8698 InitDecoder(init); |
| 8849 // Expect that initial size - size is 0. | 8699 // Expect that initial size - size is 0. |
| 8850 EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); | 8700 EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); |
| 8851 EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kManaged)); | 8701 EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kManaged)); |
| 8852 } | 8702 } |
| 8853 | 8703 |
| 8854 TEST_P(GLES2DecoderManualInitTest, MemoryTrackerTexImage2D) { | 8704 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerTexImage2D) { |
| 8855 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = | 8705 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = |
| 8856 new SizeOnlyMemoryTracker(); | 8706 new SizeOnlyMemoryTracker(); |
| 8857 set_memory_tracker(memory_tracker.get()); | 8707 set_memory_tracker(memory_tracker.get()); |
| 8858 InitState init; | 8708 InitState init; |
| 8859 init.gl_version = "3.0"; | 8709 init.gl_version = "3.0"; |
| 8860 init.bind_generates_resource = true; | 8710 init.bind_generates_resource = true; |
| 8861 InitDecoder(init); | 8711 InitDecoder(init); |
| 8862 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 8712 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 8863 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) | 8713 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) |
| 8864 .WillOnce(Return(true)).RetiresOnSaturation(); | 8714 .WillOnce(Return(true)).RetiresOnSaturation(); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 8875 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(64)) | 8725 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(64)) |
| 8876 .WillOnce(Return(false)).RetiresOnSaturation(); | 8726 .WillOnce(Return(false)).RetiresOnSaturation(); |
| 8877 TexImage2D cmd; | 8727 TexImage2D cmd; |
| 8878 cmd.Init(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, | 8728 cmd.Init(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
| 8879 kSharedMemoryId, kSharedMemoryOffset); | 8729 kSharedMemoryId, kSharedMemoryOffset); |
| 8880 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 8730 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 8881 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 8731 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 8882 EXPECT_EQ(64u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); | 8732 EXPECT_EQ(64u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); |
| 8883 } | 8733 } |
| 8884 | 8734 |
| 8885 TEST_P(GLES2DecoderManualInitTest, MemoryTrackerTexStorage2DEXT) { | 8735 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerTexStorage2DEXT) { |
| 8886 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = | 8736 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = |
| 8887 new SizeOnlyMemoryTracker(); | 8737 new SizeOnlyMemoryTracker(); |
| 8888 set_memory_tracker(memory_tracker.get()); | 8738 set_memory_tracker(memory_tracker.get()); |
| 8889 InitState init; | 8739 InitState init; |
| 8890 init.gl_version = "3.0"; | 8740 init.gl_version = "3.0"; |
| 8891 init.bind_generates_resource = true; | 8741 init.bind_generates_resource = true; |
| 8892 InitDecoder(init); | 8742 InitDecoder(init); |
| 8893 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 8743 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 8894 // Check we get out of memory and no call to glTexStorage2DEXT | 8744 // Check we get out of memory and no call to glTexStorage2DEXT |
| 8895 // if Ensure fails. | 8745 // if Ensure fails. |
| 8896 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) | 8746 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) |
| 8897 .WillOnce(Return(false)).RetiresOnSaturation(); | 8747 .WillOnce(Return(false)).RetiresOnSaturation(); |
| 8898 TexStorage2DEXT cmd; | 8748 TexStorage2DEXT cmd; |
| 8899 cmd.Init(GL_TEXTURE_2D, 1, GL_RGBA8, 8, 4); | 8749 cmd.Init(GL_TEXTURE_2D, 1, GL_RGBA8, 8, 4); |
| 8900 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 8750 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 8901 EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); | 8751 EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); |
| 8902 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 8752 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 8903 } | 8753 } |
| 8904 | 8754 |
| 8905 TEST_P(GLES2DecoderManualInitTest, MemoryTrackerCopyTexImage2D) { | 8755 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerCopyTexImage2D) { |
| 8906 GLenum target = GL_TEXTURE_2D; | 8756 GLenum target = GL_TEXTURE_2D; |
| 8907 GLint level = 0; | 8757 GLint level = 0; |
| 8908 GLenum internal_format = GL_RGBA; | 8758 GLenum internal_format = GL_RGBA; |
| 8909 GLsizei width = 4; | 8759 GLsizei width = 4; |
| 8910 GLsizei height = 8; | 8760 GLsizei height = 8; |
| 8911 GLint border = 0; | 8761 GLint border = 0; |
| 8912 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = | 8762 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = |
| 8913 new SizeOnlyMemoryTracker(); | 8763 new SizeOnlyMemoryTracker(); |
| 8914 set_memory_tracker(memory_tracker.get()); | 8764 set_memory_tracker(memory_tracker.get()); |
| 8915 InitState init; | 8765 InitState init; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 8935 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); | 8785 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); |
| 8936 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 8786 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 8937 // Check we get out of memory and no call to glCopyTexImage2D if Ensure fails. | 8787 // Check we get out of memory and no call to glCopyTexImage2D if Ensure fails. |
| 8938 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) | 8788 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) |
| 8939 .WillOnce(Return(false)).RetiresOnSaturation(); | 8789 .WillOnce(Return(false)).RetiresOnSaturation(); |
| 8940 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 8790 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 8941 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 8791 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 8942 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); | 8792 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); |
| 8943 } | 8793 } |
| 8944 | 8794 |
| 8945 TEST_P(GLES2DecoderManualInitTest, MemoryTrackerRenderbufferStorage) { | 8795 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerRenderbufferStorage) { |
| 8946 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = | 8796 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = |
| 8947 new SizeOnlyMemoryTracker(); | 8797 new SizeOnlyMemoryTracker(); |
| 8948 set_memory_tracker(memory_tracker.get()); | 8798 set_memory_tracker(memory_tracker.get()); |
| 8949 InitState init; | 8799 InitState init; |
| 8950 init.gl_version = "3.0"; | 8800 init.gl_version = "3.0"; |
| 8951 init.bind_generates_resource = true; | 8801 init.bind_generates_resource = true; |
| 8952 InitDecoder(init); | 8802 InitDecoder(init); |
| 8953 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, | 8803 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
| 8954 kServiceRenderbufferId); | 8804 kServiceRenderbufferId); |
| 8955 EXPECT_CALL(*gl_, GetError()) | 8805 EXPECT_CALL(*gl_, GetError()) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 8969 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); | 8819 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); |
| 8970 // Check we get out of memory and no call to glRenderbufferStorage if Ensure | 8820 // Check we get out of memory and no call to glRenderbufferStorage if Ensure |
| 8971 // fails. | 8821 // fails. |
| 8972 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) | 8822 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) |
| 8973 .WillOnce(Return(false)).RetiresOnSaturation(); | 8823 .WillOnce(Return(false)).RetiresOnSaturation(); |
| 8974 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 8824 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 8975 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 8825 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 8976 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); | 8826 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); |
| 8977 } | 8827 } |
| 8978 | 8828 |
| 8979 TEST_P(GLES2DecoderManualInitTest, MemoryTrackerBufferData) { | 8829 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerBufferData) { |
| 8980 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = | 8830 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = |
| 8981 new SizeOnlyMemoryTracker(); | 8831 new SizeOnlyMemoryTracker(); |
| 8982 set_memory_tracker(memory_tracker.get()); | 8832 set_memory_tracker(memory_tracker.get()); |
| 8983 InitState init; | 8833 InitState init; |
| 8984 init.gl_version = "3.0"; | 8834 init.gl_version = "3.0"; |
| 8985 init.bind_generates_resource = true; | 8835 init.bind_generates_resource = true; |
| 8986 InitDecoder(init); | 8836 InitDecoder(init); |
| 8987 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, | 8837 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, |
| 8988 kServiceBufferId); | 8838 kServiceBufferId); |
| 8989 EXPECT_CALL(*gl_, GetError()) | 8839 EXPECT_CALL(*gl_, GetError()) |
| (...skipping 12 matching lines...) Expand all Loading... |
| 9002 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kManaged)); | 8852 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kManaged)); |
| 9003 // Check we get out of memory and no call to glBufferData if Ensure | 8853 // Check we get out of memory and no call to glBufferData if Ensure |
| 9004 // fails. | 8854 // fails. |
| 9005 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) | 8855 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) |
| 9006 .WillOnce(Return(false)).RetiresOnSaturation(); | 8856 .WillOnce(Return(false)).RetiresOnSaturation(); |
| 9007 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 8857 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 9008 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 8858 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
| 9009 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kManaged)); | 8859 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kManaged)); |
| 9010 } | 8860 } |
| 9011 | 8861 |
| 9012 TEST_P(GLES2DecoderTest, DrawBuffersEXTImmediateSuccceeds) { | 8862 TEST_F(GLES2DecoderTest, DrawBuffersEXTImmediateSuccceeds) { |
| 9013 const GLsizei count = 1; | 8863 const GLsizei count = 1; |
| 9014 const GLenum bufs[] = { GL_COLOR_ATTACHMENT0 }; | 8864 const GLenum bufs[] = { GL_COLOR_ATTACHMENT0 }; |
| 9015 DrawBuffersEXTImmediate& cmd = | 8865 DrawBuffersEXTImmediate& cmd = |
| 9016 *GetImmediateAs<DrawBuffersEXTImmediate>(); | 8866 *GetImmediateAs<DrawBuffersEXTImmediate>(); |
| 9017 cmd.Init(count, bufs); | 8867 cmd.Init(count, bufs); |
| 9018 | 8868 |
| 9019 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 8869 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 9020 kServiceFramebufferId); | 8870 kServiceFramebufferId); |
| 9021 EXPECT_CALL(*gl_, DrawBuffersARB(count, _)) | 8871 EXPECT_CALL(*gl_, DrawBuffersARB(count, _)) |
| 9022 .Times(1) | 8872 .Times(1) |
| 9023 .RetiresOnSaturation(); | 8873 .RetiresOnSaturation(); |
| 9024 EXPECT_EQ(error::kNoError, | 8874 EXPECT_EQ(error::kNoError, |
| 9025 ExecuteImmediateCmd(cmd, sizeof(bufs))); | 8875 ExecuteImmediateCmd(cmd, sizeof(bufs))); |
| 9026 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 8876 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 9027 } | 8877 } |
| 9028 | 8878 |
| 9029 TEST_P(GLES2DecoderTest, DrawBuffersEXTImmediateFails) { | 8879 TEST_F(GLES2DecoderTest, DrawBuffersEXTImmediateFails) { |
| 9030 const GLsizei count = 1; | 8880 const GLsizei count = 1; |
| 9031 const GLenum bufs[] = { GL_COLOR_ATTACHMENT1_EXT }; | 8881 const GLenum bufs[] = { GL_COLOR_ATTACHMENT1_EXT }; |
| 9032 DrawBuffersEXTImmediate& cmd = | 8882 DrawBuffersEXTImmediate& cmd = |
| 9033 *GetImmediateAs<DrawBuffersEXTImmediate>(); | 8883 *GetImmediateAs<DrawBuffersEXTImmediate>(); |
| 9034 cmd.Init(count, bufs); | 8884 cmd.Init(count, bufs); |
| 9035 | 8885 |
| 9036 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 8886 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 9037 kServiceFramebufferId); | 8887 kServiceFramebufferId); |
| 9038 EXPECT_EQ(error::kNoError, | 8888 EXPECT_EQ(error::kNoError, |
| 9039 ExecuteImmediateCmd(cmd, sizeof(bufs))); | 8889 ExecuteImmediateCmd(cmd, sizeof(bufs))); |
| 9040 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 8890 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 9041 } | 8891 } |
| 9042 | 8892 |
| 9043 TEST_P(GLES2DecoderTest, DrawBuffersEXTImmediateBackbuffer) { | 8893 TEST_F(GLES2DecoderTest, DrawBuffersEXTImmediateBackbuffer) { |
| 9044 const GLsizei count = 1; | 8894 const GLsizei count = 1; |
| 9045 const GLenum bufs[] = { GL_BACK }; | 8895 const GLenum bufs[] = { GL_BACK }; |
| 9046 DrawBuffersEXTImmediate& cmd = | 8896 DrawBuffersEXTImmediate& cmd = |
| 9047 *GetImmediateAs<DrawBuffersEXTImmediate>(); | 8897 *GetImmediateAs<DrawBuffersEXTImmediate>(); |
| 9048 cmd.Init(count, bufs); | 8898 cmd.Init(count, bufs); |
| 9049 | 8899 |
| 9050 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 8900 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
| 9051 kServiceFramebufferId); | 8901 kServiceFramebufferId); |
| 9052 EXPECT_EQ(error::kNoError, | 8902 EXPECT_EQ(error::kNoError, |
| 9053 ExecuteImmediateCmd(cmd, sizeof(bufs))); | 8903 ExecuteImmediateCmd(cmd, sizeof(bufs))); |
| 9054 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 8904 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 9055 | 8905 |
| 9056 DoBindFramebuffer(GL_FRAMEBUFFER, 0, 0); // unbind | 8906 DoBindFramebuffer(GL_FRAMEBUFFER, 0, 0); // unbind |
| 9057 | 8907 |
| 9058 EXPECT_CALL(*gl_, DrawBuffersARB(count, _)) | 8908 EXPECT_CALL(*gl_, DrawBuffersARB(count, _)) |
| 9059 .Times(1) | 8909 .Times(1) |
| 9060 .RetiresOnSaturation(); | 8910 .RetiresOnSaturation(); |
| 9061 | 8911 |
| 9062 EXPECT_EQ(error::kNoError, | 8912 EXPECT_EQ(error::kNoError, |
| 9063 ExecuteImmediateCmd(cmd, sizeof(bufs))); | 8913 ExecuteImmediateCmd(cmd, sizeof(bufs))); |
| 9064 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 8914 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 9065 } | 8915 } |
| 9066 | 8916 |
| 9067 TEST_P(GLES2DecoderManualInitTest, InvalidateFramebufferBinding) { | 8917 TEST_F(GLES2DecoderManualInitTest, InvalidateFramebufferBinding) { |
| 9068 InitState init; | 8918 InitState init; |
| 9069 init.gl_version = "opengl es 3.0"; | 8919 init.gl_version = "opengl es 3.0"; |
| 9070 InitDecoder(init); | 8920 InitDecoder(init); |
| 9071 | 8921 |
| 9072 // EXPECT_EQ can't be used to compare function pointers | 8922 // EXPECT_EQ can't be used to compare function pointers |
| 9073 EXPECT_TRUE( | 8923 EXPECT_TRUE( |
| 9074 gfx::MockGLInterface::GetGLProcAddress("glInvalidateFramebuffer") == | 8924 gfx::MockGLInterface::GetGLProcAddress("glInvalidateFramebuffer") == |
| 9075 gfx::g_driver_gl.fn.glDiscardFramebufferEXTFn); | 8925 gfx::g_driver_gl.fn.glDiscardFramebufferEXTFn); |
| 9076 EXPECT_TRUE( | 8926 EXPECT_TRUE( |
| 9077 gfx::MockGLInterface::GetGLProcAddress("glInvalidateFramebuffer") != | 8927 gfx::MockGLInterface::GetGLProcAddress("glInvalidateFramebuffer") != |
| 9078 gfx::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT")); | 8928 gfx::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT")); |
| 9079 } | 8929 } |
| 9080 | 8930 |
| 9081 TEST_P(GLES2DecoderManualInitTest, DiscardFramebufferEXT) { | 8931 TEST_F(GLES2DecoderManualInitTest, DiscardFramebufferEXT) { |
| 9082 InitState init; | 8932 InitState init; |
| 9083 init.extensions = "GL_EXT_discard_framebuffer"; | 8933 init.extensions = "GL_EXT_discard_framebuffer"; |
| 9084 init.gl_version = "opengl es 2.0"; | 8934 init.gl_version = "opengl es 2.0"; |
| 9085 InitDecoder(init); | 8935 InitDecoder(init); |
| 9086 | 8936 |
| 9087 // EXPECT_EQ can't be used to compare function pointers | 8937 // EXPECT_EQ can't be used to compare function pointers |
| 9088 EXPECT_TRUE( | 8938 EXPECT_TRUE( |
| 9089 gfx::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT") == | 8939 gfx::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT") == |
| 9090 gfx::g_driver_gl.fn.glDiscardFramebufferEXTFn); | 8940 gfx::g_driver_gl.fn.glDiscardFramebufferEXTFn); |
| 9091 | 8941 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 9114 DiscardFramebufferEXTImmediate& cmd = | 8964 DiscardFramebufferEXTImmediate& cmd = |
| 9115 *GetImmediateAs<DiscardFramebufferEXTImmediate>(); | 8965 *GetImmediateAs<DiscardFramebufferEXTImmediate>(); |
| 9116 cmd.Init(target, count, attachments); | 8966 cmd.Init(target, count, attachments); |
| 9117 | 8967 |
| 9118 EXPECT_EQ(error::kNoError, | 8968 EXPECT_EQ(error::kNoError, |
| 9119 ExecuteImmediateCmd(cmd, sizeof(attachments))); | 8969 ExecuteImmediateCmd(cmd, sizeof(attachments))); |
| 9120 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 8970 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 9121 EXPECT_FALSE(framebuffer->IsCleared()); | 8971 EXPECT_FALSE(framebuffer->IsCleared()); |
| 9122 } | 8972 } |
| 9123 | 8973 |
| 9124 TEST_P(GLES2DecoderTest, DiscardFramebufferEXTUnsupported) { | 8974 TEST_F(GLES2DecoderTest, DiscardFramebufferEXTUnsupported) { |
| 9125 const GLenum target = GL_FRAMEBUFFER; | 8975 const GLenum target = GL_FRAMEBUFFER; |
| 9126 const GLsizei count = 1; | 8976 const GLsizei count = 1; |
| 9127 const GLenum attachments[] = { GL_COLOR_EXT }; | 8977 const GLenum attachments[] = { GL_COLOR_EXT }; |
| 9128 DiscardFramebufferEXTImmediate& cmd = | 8978 DiscardFramebufferEXTImmediate& cmd = |
| 9129 *GetImmediateAs<DiscardFramebufferEXTImmediate>(); | 8979 *GetImmediateAs<DiscardFramebufferEXTImmediate>(); |
| 9130 cmd.Init(target, count, attachments); | 8980 cmd.Init(target, count, attachments); |
| 9131 | 8981 |
| 9132 // Should not result into a call into GL. | 8982 // Should not result into a call into GL. |
| 9133 EXPECT_EQ(error::kNoError, | 8983 EXPECT_EQ(error::kNoError, |
| 9134 ExecuteImmediateCmd(cmd, sizeof(attachments))); | 8984 ExecuteImmediateCmd(cmd, sizeof(attachments))); |
| 9135 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 8985 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
| 9136 } | 8986 } |
| 9137 | 8987 |
| 9138 TEST_P(GLES2DecoderRestoreStateTest, NullPreviousStateBGR) { | 8988 TEST_F(GLES2DecoderRestoreStateTest, NullPreviousStateBGR) { |
| 9139 InitState init; | 8989 InitState init; |
| 9140 init.gl_version = "3.0"; | 8990 init.gl_version = "3.0"; |
| 9141 init.bind_generates_resource = true; | 8991 init.bind_generates_resource = true; |
| 9142 InitDecoder(init); | 8992 InitDecoder(init); |
| 9143 SetupTexture(); | 8993 SetupTexture(); |
| 9144 | 8994 |
| 9145 InSequence sequence; | 8995 InSequence sequence; |
| 9146 // Expect to restore texture bindings for unit GL_TEXTURE0. | 8996 // Expect to restore texture bindings for unit GL_TEXTURE0. |
| 9147 AddExpectationsForActiveTexture(GL_TEXTURE0); | 8997 AddExpectationsForActiveTexture(GL_TEXTURE0); |
| 9148 AddExpectationsForBindTexture(GL_TEXTURE_2D, kServiceTextureId); | 8998 AddExpectationsForBindTexture(GL_TEXTURE_2D, kServiceTextureId); |
| 9149 AddExpectationsForBindTexture(GL_TEXTURE_CUBE_MAP, | 8999 AddExpectationsForBindTexture(GL_TEXTURE_CUBE_MAP, |
| 9150 TestHelper::kServiceDefaultTextureCubemapId); | 9000 TestHelper::kServiceDefaultTextureCubemapId); |
| 9151 | 9001 |
| 9152 // Expect to restore texture bindings for remaining units. | 9002 // Expect to restore texture bindings for remaining units. |
| 9153 for (uint32 i = 1; i < group().max_texture_units() ; ++i) { | 9003 for (uint32 i = 1; i < group().max_texture_units() ; ++i) { |
| 9154 AddExpectationsForActiveTexture(GL_TEXTURE0 + i); | 9004 AddExpectationsForActiveTexture(GL_TEXTURE0 + i); |
| 9155 AddExpectationsForBindTexture(GL_TEXTURE_2D, | 9005 AddExpectationsForBindTexture(GL_TEXTURE_2D, |
| 9156 TestHelper::kServiceDefaultTexture2dId); | 9006 TestHelper::kServiceDefaultTexture2dId); |
| 9157 AddExpectationsForBindTexture(GL_TEXTURE_CUBE_MAP, | 9007 AddExpectationsForBindTexture(GL_TEXTURE_CUBE_MAP, |
| 9158 TestHelper::kServiceDefaultTextureCubemapId); | 9008 TestHelper::kServiceDefaultTextureCubemapId); |
| 9159 } | 9009 } |
| 9160 | 9010 |
| 9161 // Expect to restore the active texture unit to GL_TEXTURE0. | 9011 // Expect to restore the active texture unit to GL_TEXTURE0. |
| 9162 AddExpectationsForActiveTexture(GL_TEXTURE0); | 9012 AddExpectationsForActiveTexture(GL_TEXTURE0); |
| 9163 | 9013 |
| 9164 GetDecoder()->RestoreAllTextureUnitBindings(NULL); | 9014 GetDecoder()->RestoreAllTextureUnitBindings(NULL); |
| 9165 } | 9015 } |
| 9166 | 9016 |
| 9167 TEST_P(GLES2DecoderRestoreStateTest, NullPreviousState) { | 9017 TEST_F(GLES2DecoderRestoreStateTest, NullPreviousState) { |
| 9168 InitState init; | 9018 InitState init; |
| 9169 init.gl_version = "3.0"; | 9019 init.gl_version = "3.0"; |
| 9170 InitDecoder(init); | 9020 InitDecoder(init); |
| 9171 SetupTexture(); | 9021 SetupTexture(); |
| 9172 | 9022 |
| 9173 InSequence sequence; | 9023 InSequence sequence; |
| 9174 // Expect to restore texture bindings for unit GL_TEXTURE0. | 9024 // Expect to restore texture bindings for unit GL_TEXTURE0. |
| 9175 AddExpectationsForActiveTexture(GL_TEXTURE0); | 9025 AddExpectationsForActiveTexture(GL_TEXTURE0); |
| 9176 AddExpectationsForBindTexture(GL_TEXTURE_2D, kServiceTextureId); | 9026 AddExpectationsForBindTexture(GL_TEXTURE_2D, kServiceTextureId); |
| 9177 AddExpectationsForBindTexture(GL_TEXTURE_CUBE_MAP, 0); | 9027 AddExpectationsForBindTexture(GL_TEXTURE_CUBE_MAP, 0); |
| 9178 | 9028 |
| 9179 // Expect to restore texture bindings for remaining units. | 9029 // Expect to restore texture bindings for remaining units. |
| 9180 for (uint32 i = 1; i < group().max_texture_units(); ++i) { | 9030 for (uint32 i = 1; i < group().max_texture_units(); ++i) { |
| 9181 AddExpectationsForActiveTexture(GL_TEXTURE0 + i); | 9031 AddExpectationsForActiveTexture(GL_TEXTURE0 + i); |
| 9182 AddExpectationsForBindTexture(GL_TEXTURE_2D, 0); | 9032 AddExpectationsForBindTexture(GL_TEXTURE_2D, 0); |
| 9183 AddExpectationsForBindTexture(GL_TEXTURE_CUBE_MAP, 0); | 9033 AddExpectationsForBindTexture(GL_TEXTURE_CUBE_MAP, 0); |
| 9184 } | 9034 } |
| 9185 | 9035 |
| 9186 // Expect to restore the active texture unit to GL_TEXTURE0. | 9036 // Expect to restore the active texture unit to GL_TEXTURE0. |
| 9187 AddExpectationsForActiveTexture(GL_TEXTURE0); | 9037 AddExpectationsForActiveTexture(GL_TEXTURE0); |
| 9188 | 9038 |
| 9189 GetDecoder()->RestoreAllTextureUnitBindings(NULL); | 9039 GetDecoder()->RestoreAllTextureUnitBindings(NULL); |
| 9190 } | 9040 } |
| 9191 | 9041 |
| 9192 TEST_P(GLES2DecoderRestoreStateTest, WithPreviousStateBGR) { | 9042 TEST_F(GLES2DecoderRestoreStateTest, WithPreviousStateBGR) { |
| 9193 InitState init; | 9043 InitState init; |
| 9194 init.gl_version = "3.0"; | 9044 init.gl_version = "3.0"; |
| 9195 init.bind_generates_resource = true; | 9045 init.bind_generates_resource = true; |
| 9196 InitDecoder(init); | 9046 InitDecoder(init); |
| 9197 SetupTexture(); | 9047 SetupTexture(); |
| 9198 | 9048 |
| 9199 // Construct a previous ContextState with all texture bindings | 9049 // Construct a previous ContextState with all texture bindings |
| 9200 // set to default textures. | 9050 // set to default textures. |
| 9201 ContextState prev_state(NULL, NULL, NULL); | 9051 ContextState prev_state(NULL, NULL, NULL); |
| 9202 InitializeContextState(&prev_state, std::numeric_limits<uint32>::max(), 0); | 9052 InitializeContextState(&prev_state, std::numeric_limits<uint32>::max(), 0); |
| 9203 | 9053 |
| 9204 InSequence sequence; | 9054 InSequence sequence; |
| 9205 // Expect to restore only GL_TEXTURE_2D binding for GL_TEXTURE0 unit, | 9055 // Expect to restore only GL_TEXTURE_2D binding for GL_TEXTURE0 unit, |
| 9206 // since the rest of the bindings haven't changed between the current | 9056 // since the rest of the bindings haven't changed between the current |
| 9207 // state and the |prev_state|. | 9057 // state and the |prev_state|. |
| 9208 AddExpectationsForActiveTexture(GL_TEXTURE0); | 9058 AddExpectationsForActiveTexture(GL_TEXTURE0); |
| 9209 AddExpectationsForBindTexture(GL_TEXTURE_2D, kServiceTextureId); | 9059 AddExpectationsForBindTexture(GL_TEXTURE_2D, kServiceTextureId); |
| 9210 | 9060 |
| 9211 // Expect to restore active texture unit to GL_TEXTURE0. | 9061 // Expect to restore active texture unit to GL_TEXTURE0. |
| 9212 AddExpectationsForActiveTexture(GL_TEXTURE0); | 9062 AddExpectationsForActiveTexture(GL_TEXTURE0); |
| 9213 | 9063 |
| 9214 GetDecoder()->RestoreAllTextureUnitBindings(&prev_state); | 9064 GetDecoder()->RestoreAllTextureUnitBindings(&prev_state); |
| 9215 } | 9065 } |
| 9216 | 9066 |
| 9217 TEST_P(GLES2DecoderRestoreStateTest, WithPreviousState) { | 9067 TEST_F(GLES2DecoderRestoreStateTest, WithPreviousState) { |
| 9218 InitState init; | 9068 InitState init; |
| 9219 init.gl_version = "3.0"; | 9069 init.gl_version = "3.0"; |
| 9220 InitDecoder(init); | 9070 InitDecoder(init); |
| 9221 SetupTexture(); | 9071 SetupTexture(); |
| 9222 | 9072 |
| 9223 // Construct a previous ContextState with all texture bindings | 9073 // Construct a previous ContextState with all texture bindings |
| 9224 // set to default textures. | 9074 // set to default textures. |
| 9225 ContextState prev_state(NULL, NULL, NULL); | 9075 ContextState prev_state(NULL, NULL, NULL); |
| 9226 InitializeContextState(&prev_state, std::numeric_limits<uint32>::max(), 0); | 9076 InitializeContextState(&prev_state, std::numeric_limits<uint32>::max(), 0); |
| 9227 | 9077 |
| 9228 InSequence sequence; | 9078 InSequence sequence; |
| 9229 // Expect to restore only GL_TEXTURE_2D binding for GL_TEXTURE0 unit, | 9079 // Expect to restore only GL_TEXTURE_2D binding for GL_TEXTURE0 unit, |
| 9230 // since the rest of the bindings haven't changed between the current | 9080 // since the rest of the bindings haven't changed between the current |
| 9231 // state and the |prev_state|. | 9081 // state and the |prev_state|. |
| 9232 AddExpectationsForActiveTexture(GL_TEXTURE0); | 9082 AddExpectationsForActiveTexture(GL_TEXTURE0); |
| 9233 AddExpectationsForBindTexture(GL_TEXTURE_2D, kServiceTextureId); | 9083 AddExpectationsForBindTexture(GL_TEXTURE_2D, kServiceTextureId); |
| 9234 | 9084 |
| 9235 // Expect to restore active texture unit to GL_TEXTURE0. | 9085 // Expect to restore active texture unit to GL_TEXTURE0. |
| 9236 AddExpectationsForActiveTexture(GL_TEXTURE0); | 9086 AddExpectationsForActiveTexture(GL_TEXTURE0); |
| 9237 | 9087 |
| 9238 GetDecoder()->RestoreAllTextureUnitBindings(&prev_state); | 9088 GetDecoder()->RestoreAllTextureUnitBindings(&prev_state); |
| 9239 } | 9089 } |
| 9240 | 9090 |
| 9241 TEST_P(GLES2DecoderRestoreStateTest, ActiveUnit1) { | 9091 TEST_F(GLES2DecoderRestoreStateTest, ActiveUnit1) { |
| 9242 InitState init; | 9092 InitState init; |
| 9243 init.gl_version = "3.0"; | 9093 init.gl_version = "3.0"; |
| 9244 InitDecoder(init); | 9094 InitDecoder(init); |
| 9245 | 9095 |
| 9246 // Bind a non-default texture to GL_TEXTURE1 unit. | 9096 // Bind a non-default texture to GL_TEXTURE1 unit. |
| 9247 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE1)); | 9097 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE1)); |
| 9248 ActiveTexture cmd; | 9098 ActiveTexture cmd; |
| 9249 cmd.Init(GL_TEXTURE1); | 9099 cmd.Init(GL_TEXTURE1); |
| 9250 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 9100 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 9251 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 9101 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 9262 // state and the |prev_state|. | 9112 // state and the |prev_state|. |
| 9263 AddExpectationsForActiveTexture(GL_TEXTURE1); | 9113 AddExpectationsForActiveTexture(GL_TEXTURE1); |
| 9264 AddExpectationsForBindTexture(GL_TEXTURE_2D, kServiceTextureId); | 9114 AddExpectationsForBindTexture(GL_TEXTURE_2D, kServiceTextureId); |
| 9265 | 9115 |
| 9266 // Expect to restore active texture unit to GL_TEXTURE1. | 9116 // Expect to restore active texture unit to GL_TEXTURE1. |
| 9267 AddExpectationsForActiveTexture(GL_TEXTURE1); | 9117 AddExpectationsForActiveTexture(GL_TEXTURE1); |
| 9268 | 9118 |
| 9269 GetDecoder()->RestoreAllTextureUnitBindings(&prev_state); | 9119 GetDecoder()->RestoreAllTextureUnitBindings(&prev_state); |
| 9270 } | 9120 } |
| 9271 | 9121 |
| 9272 TEST_P(GLES2DecoderRestoreStateTest, NonDefaultUnit0BGR) { | 9122 TEST_F(GLES2DecoderRestoreStateTest, NonDefaultUnit0BGR) { |
| 9273 InitState init; | 9123 InitState init; |
| 9274 init.gl_version = "3.0"; | 9124 init.gl_version = "3.0"; |
| 9275 init.bind_generates_resource = true; | 9125 init.bind_generates_resource = true; |
| 9276 InitDecoder(init); | 9126 InitDecoder(init); |
| 9277 | 9127 |
| 9278 // Bind a non-default texture to GL_TEXTURE1 unit. | 9128 // Bind a non-default texture to GL_TEXTURE1 unit. |
| 9279 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE1)); | 9129 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE1)); |
| 9280 SpecializedSetup<ActiveTexture, 0>(true); | 9130 SpecializedSetup<ActiveTexture, 0>(true); |
| 9281 ActiveTexture cmd; | 9131 ActiveTexture cmd; |
| 9282 cmd.Init(GL_TEXTURE1); | 9132 cmd.Init(GL_TEXTURE1); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 9301 // non-default. | 9151 // non-default. |
| 9302 AddExpectationsForActiveTexture(GL_TEXTURE1); | 9152 AddExpectationsForActiveTexture(GL_TEXTURE1); |
| 9303 AddExpectationsForBindTexture(GL_TEXTURE_2D, kServiceTextureId); | 9153 AddExpectationsForBindTexture(GL_TEXTURE_2D, kServiceTextureId); |
| 9304 | 9154 |
| 9305 // Expect to restore active texture unit to GL_TEXTURE1. | 9155 // Expect to restore active texture unit to GL_TEXTURE1. |
| 9306 AddExpectationsForActiveTexture(GL_TEXTURE1); | 9156 AddExpectationsForActiveTexture(GL_TEXTURE1); |
| 9307 | 9157 |
| 9308 GetDecoder()->RestoreAllTextureUnitBindings(&prev_state); | 9158 GetDecoder()->RestoreAllTextureUnitBindings(&prev_state); |
| 9309 } | 9159 } |
| 9310 | 9160 |
| 9311 TEST_P(GLES2DecoderRestoreStateTest, NonDefaultUnit1BGR) { | 9161 TEST_F(GLES2DecoderRestoreStateTest, NonDefaultUnit1BGR) { |
| 9312 InitState init; | 9162 InitState init; |
| 9313 init.gl_version = "3.0"; | 9163 init.gl_version = "3.0"; |
| 9314 init.bind_generates_resource = true; | 9164 init.bind_generates_resource = true; |
| 9315 InitDecoder(init); | 9165 InitDecoder(init); |
| 9316 | 9166 |
| 9317 // Bind a non-default texture to GL_TEXTURE0 unit. | 9167 // Bind a non-default texture to GL_TEXTURE0 unit. |
| 9318 SetupTexture(); | 9168 SetupTexture(); |
| 9319 | 9169 |
| 9320 // Construct a previous ContextState with GL_TEXTURE_2D target in | 9170 // Construct a previous ContextState with GL_TEXTURE_2D target in |
| 9321 // GL_TEXTURE1 unit bound to a non-default texture and the rest | 9171 // GL_TEXTURE1 unit bound to a non-default texture and the rest |
| (...skipping 12 matching lines...) Expand all Loading... |
| 9334 AddExpectationsForActiveTexture(GL_TEXTURE1); | 9184 AddExpectationsForActiveTexture(GL_TEXTURE1); |
| 9335 AddExpectationsForBindTexture(GL_TEXTURE_2D, | 9185 AddExpectationsForBindTexture(GL_TEXTURE_2D, |
| 9336 TestHelper::kServiceDefaultTexture2dId); | 9186 TestHelper::kServiceDefaultTexture2dId); |
| 9337 | 9187 |
| 9338 // Expect to restore active texture unit to GL_TEXTURE0. | 9188 // Expect to restore active texture unit to GL_TEXTURE0. |
| 9339 AddExpectationsForActiveTexture(GL_TEXTURE0); | 9189 AddExpectationsForActiveTexture(GL_TEXTURE0); |
| 9340 | 9190 |
| 9341 GetDecoder()->RestoreAllTextureUnitBindings(&prev_state); | 9191 GetDecoder()->RestoreAllTextureUnitBindings(&prev_state); |
| 9342 } | 9192 } |
| 9343 | 9193 |
| 9344 TEST_P(GLES2DecoderRestoreStateTest, DefaultUnit0) { | 9194 TEST_F(GLES2DecoderRestoreStateTest, DefaultUnit0) { |
| 9345 InitState init; | 9195 InitState init; |
| 9346 init.gl_version = "3.0"; | 9196 init.gl_version = "3.0"; |
| 9347 InitDecoder(init); | 9197 InitDecoder(init); |
| 9348 | 9198 |
| 9349 // Bind a non-default texture to GL_TEXTURE1 unit. | 9199 // Bind a non-default texture to GL_TEXTURE1 unit. |
| 9350 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE1)); | 9200 EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE1)); |
| 9351 SpecializedSetup<ActiveTexture, 0>(true); | 9201 SpecializedSetup<ActiveTexture, 0>(true); |
| 9352 ActiveTexture cmd; | 9202 ActiveTexture cmd; |
| 9353 cmd.Init(GL_TEXTURE1); | 9203 cmd.Init(GL_TEXTURE1); |
| 9354 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 9204 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 9371 // non-default. | 9221 // non-default. |
| 9372 AddExpectationsForActiveTexture(GL_TEXTURE1); | 9222 AddExpectationsForActiveTexture(GL_TEXTURE1); |
| 9373 AddExpectationsForBindTexture(GL_TEXTURE_2D, kServiceTextureId); | 9223 AddExpectationsForBindTexture(GL_TEXTURE_2D, kServiceTextureId); |
| 9374 | 9224 |
| 9375 // Expect to restore active texture unit to GL_TEXTURE1. | 9225 // Expect to restore active texture unit to GL_TEXTURE1. |
| 9376 AddExpectationsForActiveTexture(GL_TEXTURE1); | 9226 AddExpectationsForActiveTexture(GL_TEXTURE1); |
| 9377 | 9227 |
| 9378 GetDecoder()->RestoreAllTextureUnitBindings(&prev_state); | 9228 GetDecoder()->RestoreAllTextureUnitBindings(&prev_state); |
| 9379 } | 9229 } |
| 9380 | 9230 |
| 9381 TEST_P(GLES2DecoderRestoreStateTest, DefaultUnit1) { | 9231 TEST_F(GLES2DecoderRestoreStateTest, DefaultUnit1) { |
| 9382 InitState init; | 9232 InitState init; |
| 9383 init.gl_version = "3.0"; | 9233 init.gl_version = "3.0"; |
| 9384 InitDecoder(init); | 9234 InitDecoder(init); |
| 9385 | 9235 |
| 9386 // Bind a non-default texture to GL_TEXTURE0 unit. | 9236 // Bind a non-default texture to GL_TEXTURE0 unit. |
| 9387 SetupTexture(); | 9237 SetupTexture(); |
| 9388 | 9238 |
| 9389 // Construct a previous ContextState with GL_TEXTURE_2D target in | 9239 // Construct a previous ContextState with GL_TEXTURE_2D target in |
| 9390 // GL_TEXTURE1 unit bound to a non-default texture and the rest | 9240 // GL_TEXTURE1 unit bound to a non-default texture and the rest |
| 9391 // set to default textures. | 9241 // set to default textures. |
| (...skipping 24 matching lines...) Expand all Loading... |
| 9416 // TODO(vmiura): Tests for ContextState::RestoreBufferBindings(). | 9266 // TODO(vmiura): Tests for ContextState::RestoreBufferBindings(). |
| 9417 | 9267 |
| 9418 // TODO(vmiura): Tests for ContextState::RestoreProgramBindings(). | 9268 // TODO(vmiura): Tests for ContextState::RestoreProgramBindings(). |
| 9419 | 9269 |
| 9420 // TODO(vmiura): Tests for RestoreRenderbufferBindings(). | 9270 // TODO(vmiura): Tests for RestoreRenderbufferBindings(). |
| 9421 | 9271 |
| 9422 // TODO(vmiura): Tests for RestoreProgramBindings(). | 9272 // TODO(vmiura): Tests for RestoreProgramBindings(). |
| 9423 | 9273 |
| 9424 // TODO(vmiura): Tests for RestoreGlobalState(). | 9274 // TODO(vmiura): Tests for RestoreGlobalState(). |
| 9425 | 9275 |
| 9426 TEST_P(GLES2DecoderManualInitTest, ClearUniformsBeforeFirstProgramUse) { | 9276 TEST_F(GLES2DecoderManualInitTest, ClearUniformsBeforeFirstProgramUse) { |
| 9427 CommandLine command_line(0, NULL); | 9277 CommandLine command_line(0, NULL); |
| 9428 command_line.AppendSwitchASCII( | 9278 command_line.AppendSwitchASCII( |
| 9429 switches::kGpuDriverBugWorkarounds, | 9279 switches::kGpuDriverBugWorkarounds, |
| 9430 base::IntToString(gpu::CLEAR_UNIFORMS_BEFORE_FIRST_PROGRAM_USE)); | 9280 base::IntToString(gpu::CLEAR_UNIFORMS_BEFORE_FIRST_PROGRAM_USE)); |
| 9431 InitState init; | 9281 InitState init; |
| 9432 init.gl_version = "3.0"; | 9282 init.gl_version = "3.0"; |
| 9433 init.has_alpha = true; | 9283 init.has_alpha = true; |
| 9434 init.request_alpha = true; | 9284 init.request_alpha = true; |
| 9435 init.bind_generates_resource = true; | 9285 init.bind_generates_resource = true; |
| 9436 InitDecoderWithCommandLine(init, &command_line); | 9286 InitDecoderWithCommandLine(init, &command_line); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 9462 { | 9312 { |
| 9463 EXPECT_CALL(*gl_, UseProgram(kServiceProgramId)) | 9313 EXPECT_CALL(*gl_, UseProgram(kServiceProgramId)) |
| 9464 .Times(1) | 9314 .Times(1) |
| 9465 .RetiresOnSaturation(); | 9315 .RetiresOnSaturation(); |
| 9466 cmds::UseProgram cmd; | 9316 cmds::UseProgram cmd; |
| 9467 cmd.Init(client_program_id_); | 9317 cmd.Init(client_program_id_); |
| 9468 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 9318 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 9469 } | 9319 } |
| 9470 } | 9320 } |
| 9471 | 9321 |
| 9472 TEST_P(GLES2DecoderManualInitTest, TexImage2DFloatOnGLES2) { | 9322 TEST_F(GLES2DecoderManualInitTest, TexImage2DFloatOnGLES2) { |
| 9473 InitState init; | 9323 InitState init; |
| 9474 init.extensions = "GL_OES_texture_float"; | 9324 init.extensions = "GL_OES_texture_float"; |
| 9475 init.gl_version = "opengl es 2.0"; | 9325 init.gl_version = "opengl es 2.0"; |
| 9476 InitDecoder(init); | 9326 InitDecoder(init); |
| 9477 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 9327 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 9478 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 17, 0, GL_RGBA, GL_FLOAT, 0, 0); | 9328 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 17, 0, GL_RGBA, GL_FLOAT, 0, 0); |
| 9479 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 16, 17, 0, GL_RGB, GL_FLOAT, 0, 0); | 9329 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 16, 17, 0, GL_RGB, GL_FLOAT, 0, 0); |
| 9480 DoTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 16, 17, 0, GL_LUMINANCE, | 9330 DoTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 16, 17, 0, GL_LUMINANCE, |
| 9481 GL_FLOAT, 0, 0); | 9331 GL_FLOAT, 0, 0); |
| 9482 DoTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 16, 17, 0, GL_ALPHA, GL_FLOAT, | 9332 DoTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 16, 17, 0, GL_ALPHA, GL_FLOAT, |
| 9483 0, 0); | 9333 0, 0); |
| 9484 DoTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, 16, 17, 0, | 9334 DoTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, 16, 17, 0, |
| 9485 GL_LUMINANCE_ALPHA, GL_FLOAT, 0, 0); | 9335 GL_LUMINANCE_ALPHA, GL_FLOAT, 0, 0); |
| 9486 } | 9336 } |
| 9487 | 9337 |
| 9488 TEST_P(GLES2DecoderManualInitTest, TexImage2DFloatOnGLES3) { | 9338 TEST_F(GLES2DecoderManualInitTest, TexImage2DFloatOnGLES3) { |
| 9489 InitState init; | 9339 InitState init; |
| 9490 init.extensions = "GL_OES_texture_float GL_EXT_color_buffer_float"; | 9340 init.extensions = "GL_OES_texture_float GL_EXT_color_buffer_float"; |
| 9491 init.gl_version = "opengl es 3.0"; | 9341 init.gl_version = "opengl es 3.0"; |
| 9492 InitDecoder(init); | 9342 InitDecoder(init); |
| 9493 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 9343 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 9494 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 17, 0, GL_RGBA, GL_FLOAT, 0, 0); | 9344 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 17, 0, GL_RGBA, GL_FLOAT, 0, 0); |
| 9495 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 16, 17, 0, GL_RGB, GL_FLOAT, 0, 0); | 9345 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 16, 17, 0, GL_RGB, GL_FLOAT, 0, 0); |
| 9496 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, 16, 17, 0, GL_RGBA, GL_FLOAT, 0, | 9346 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, 16, 17, 0, GL_RGBA, GL_FLOAT, 0, |
| 9497 0); | 9347 0); |
| 9498 DoTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 16, 17, 0, GL_LUMINANCE, | 9348 DoTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 16, 17, 0, GL_LUMINANCE, |
| 9499 GL_FLOAT, 0, 0); | 9349 GL_FLOAT, 0, 0); |
| 9500 DoTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 16, 17, 0, GL_ALPHA, GL_FLOAT, | 9350 DoTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 16, 17, 0, GL_ALPHA, GL_FLOAT, |
| 9501 0, 0); | 9351 0, 0); |
| 9502 DoTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, 16, 17, 0, | 9352 DoTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, 16, 17, 0, |
| 9503 GL_LUMINANCE_ALPHA, GL_FLOAT, 0, 0); | 9353 GL_LUMINANCE_ALPHA, GL_FLOAT, 0, 0); |
| 9504 } | 9354 } |
| 9505 | 9355 |
| 9506 TEST_P(GLES2DecoderManualInitTest, TexSubImage2DFloatOnGLES3) { | 9356 TEST_F(GLES2DecoderManualInitTest, TexSubImage2DFloatOnGLES3) { |
| 9507 InitState init; | 9357 InitState init; |
| 9508 init.extensions = "GL_OES_texture_float GL_EXT_color_buffer_float"; | 9358 init.extensions = "GL_OES_texture_float GL_EXT_color_buffer_float"; |
| 9509 init.gl_version = "opengl es 3.0"; | 9359 init.gl_version = "opengl es 3.0"; |
| 9510 InitDecoder(init); | 9360 InitDecoder(init); |
| 9511 const int kWidth = 8; | 9361 const int kWidth = 8; |
| 9512 const int kHeight = 4; | 9362 const int kHeight = 4; |
| 9513 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 9363 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 9514 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, kWidth, kHeight, 0, GL_RGBA, | 9364 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, kWidth, kHeight, 0, GL_RGBA, |
| 9515 GL_FLOAT, 0, 0); | 9365 GL_FLOAT, 0, 0); |
| 9516 EXPECT_CALL(*gl_, TexImage2D( | 9366 EXPECT_CALL(*gl_, TexImage2D( |
| 9517 GL_TEXTURE_2D, 0, GL_RGBA32F, kWidth, kHeight, 0, GL_RGBA, GL_FLOAT, | 9367 GL_TEXTURE_2D, 0, GL_RGBA32F, kWidth, kHeight, 0, GL_RGBA, GL_FLOAT, |
| 9518 shared_memory_address_)) | 9368 shared_memory_address_)) |
| 9519 .Times(1) | 9369 .Times(1) |
| 9520 .RetiresOnSaturation(); | 9370 .RetiresOnSaturation(); |
| 9521 TexSubImage2D cmd; | 9371 TexSubImage2D cmd; |
| 9522 cmd.Init( | 9372 cmd.Init( |
| 9523 GL_TEXTURE_2D, 0, 0, 0, kWidth, kHeight, GL_RGBA, GL_FLOAT, | 9373 GL_TEXTURE_2D, 0, 0, 0, kWidth, kHeight, GL_RGBA, GL_FLOAT, |
| 9524 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); | 9374 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); |
| 9525 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 9375 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 9526 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 9376 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 9527 } | 9377 } |
| 9528 | 9378 |
| 9529 TEST_P(GLES2DecoderManualInitTest, TexSubImage2DFloatDoesClearOnGLES3) { | 9379 TEST_F(GLES2DecoderManualInitTest, TexSubImage2DFloatDoesClearOnGLES3) { |
| 9530 InitState init; | 9380 InitState init; |
| 9531 init.extensions = "GL_OES_texture_float GL_EXT_color_buffer_float"; | 9381 init.extensions = "GL_OES_texture_float GL_EXT_color_buffer_float"; |
| 9532 init.gl_version = "opengl es 3.0"; | 9382 init.gl_version = "opengl es 3.0"; |
| 9533 InitDecoder(init); | 9383 InitDecoder(init); |
| 9534 const int kWidth = 8; | 9384 const int kWidth = 8; |
| 9535 const int kHeight = 4; | 9385 const int kHeight = 4; |
| 9536 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 9386 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 9537 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, kWidth, kHeight, 0, GL_RGBA, | 9387 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, kWidth, kHeight, 0, GL_RGBA, |
| 9538 GL_FLOAT, 0, 0); | 9388 GL_FLOAT, 0, 0); |
| 9539 SetupClearTextureExpectations( | 9389 SetupClearTextureExpectations( |
| 9540 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, | 9390 kServiceTextureId, kServiceTextureId, GL_TEXTURE_2D, GL_TEXTURE_2D, |
| 9541 0, GL_RGBA32F, GL_RGBA, GL_FLOAT, kWidth, kHeight); | 9391 0, GL_RGBA32F, GL_RGBA, GL_FLOAT, kWidth, kHeight); |
| 9542 EXPECT_CALL(*gl_, TexSubImage2D( | 9392 EXPECT_CALL(*gl_, TexSubImage2D( |
| 9543 GL_TEXTURE_2D, 0, 1, 0, kWidth - 1, kHeight, GL_RGBA, GL_FLOAT, | 9393 GL_TEXTURE_2D, 0, 1, 0, kWidth - 1, kHeight, GL_RGBA, GL_FLOAT, |
| 9544 shared_memory_address_)) | 9394 shared_memory_address_)) |
| 9545 .Times(1) | 9395 .Times(1) |
| 9546 .RetiresOnSaturation(); | 9396 .RetiresOnSaturation(); |
| 9547 TexSubImage2D cmd; | 9397 TexSubImage2D cmd; |
| 9548 cmd.Init( | 9398 cmd.Init( |
| 9549 GL_TEXTURE_2D, 0, 1, 0, kWidth - 1, kHeight, GL_RGBA, GL_FLOAT, | 9399 GL_TEXTURE_2D, 0, 1, 0, kWidth - 1, kHeight, GL_RGBA, GL_FLOAT, |
| 9550 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); | 9400 kSharedMemoryId, kSharedMemoryOffset, GL_FALSE); |
| 9551 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 9401 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 9552 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 9402 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 9553 } | 9403 } |
| 9554 | 9404 |
| 9555 TEST_P(GLES2DecoderManualInitTest, TexImage2DFloatConvertsFormatDesktop) { | 9405 TEST_F(GLES2DecoderManualInitTest, TexImage2DFloatConvertsFormatDesktop) { |
| 9556 InitState init; | 9406 InitState init; |
| 9557 init.extensions = "GL_ARB_texture_float"; | 9407 init.extensions = "GL_ARB_texture_float"; |
| 9558 init.gl_version = "2.1"; | 9408 init.gl_version = "2.1"; |
| 9559 InitDecoder(init); | 9409 InitDecoder(init); |
| 9560 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 9410 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
| 9561 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, 16, 17, 0, GL_RGBA, GL_FLOAT, 0, | 9411 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, 16, 17, 0, GL_RGBA, GL_FLOAT, 0, |
| 9562 0); | 9412 0); |
| 9563 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGB32F, 16, 17, 0, GL_RGB, GL_FLOAT, 0, 0); | 9413 DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGB32F, 16, 17, 0, GL_RGB, GL_FLOAT, 0, 0); |
| 9564 DoTexImage2DConvertInternalFormat(GL_TEXTURE_2D, 0, GL_RGBA, 16, 17, 0, | 9414 DoTexImage2DConvertInternalFormat(GL_TEXTURE_2D, 0, GL_RGBA, 16, 17, 0, |
| 9565 GL_RGBA, GL_FLOAT, 0, 0, GL_RGBA32F_ARB); | 9415 GL_RGBA, GL_FLOAT, 0, 0, GL_RGBA32F_ARB); |
| 9566 DoTexImage2DConvertInternalFormat(GL_TEXTURE_2D, 0, GL_RGB, 16, 17, 0, | 9416 DoTexImage2DConvertInternalFormat(GL_TEXTURE_2D, 0, GL_RGB, 16, 17, 0, |
| 9567 GL_RGB, GL_FLOAT, 0, 0, GL_RGB32F_ARB); | 9417 GL_RGB, GL_FLOAT, 0, 0, GL_RGB32F_ARB); |
| 9568 DoTexImage2DConvertInternalFormat(GL_TEXTURE_2D, 0, GL_LUMINANCE, 16, 17, 0, | 9418 DoTexImage2DConvertInternalFormat(GL_TEXTURE_2D, 0, GL_LUMINANCE, 16, 17, 0, |
| 9569 GL_LUMINANCE, GL_FLOAT, 0, 0, | 9419 GL_LUMINANCE, GL_FLOAT, 0, 0, |
| 9570 GL_LUMINANCE32F_ARB); | 9420 GL_LUMINANCE32F_ARB); |
| 9571 DoTexImage2DConvertInternalFormat(GL_TEXTURE_2D, 0, GL_ALPHA, 16, 17, 0, | 9421 DoTexImage2DConvertInternalFormat(GL_TEXTURE_2D, 0, GL_ALPHA, 16, 17, 0, |
| 9572 GL_ALPHA, GL_FLOAT, 0, 0, GL_ALPHA32F_ARB); | 9422 GL_ALPHA, GL_FLOAT, 0, 0, GL_ALPHA32F_ARB); |
| 9573 DoTexImage2DConvertInternalFormat(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, 16, | 9423 DoTexImage2DConvertInternalFormat(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, 16, |
| 9574 17, 0, GL_LUMINANCE_ALPHA, GL_FLOAT, 0, 0, | 9424 17, 0, GL_LUMINANCE_ALPHA, GL_FLOAT, 0, 0, |
| 9575 GL_LUMINANCE_ALPHA32F_ARB); | 9425 GL_LUMINANCE_ALPHA32F_ARB); |
| 9576 } | 9426 } |
| 9577 | 9427 |
| 9578 TEST_P(GLES2DecoderManualInitTest, ReadFormatExtension) { | 9428 TEST_F(GLES2DecoderManualInitTest, ReadFormatExtension) { |
| 9579 InitState init; | 9429 InitState init; |
| 9580 init.extensions = "GL_OES_read_format"; | 9430 init.extensions = "GL_OES_read_format"; |
| 9581 init.gl_version = "2.1"; | 9431 init.gl_version = "2.1"; |
| 9582 init.bind_generates_resource = true; | 9432 init.bind_generates_resource = true; |
| 9583 InitDecoder(init); | 9433 InitDecoder(init); |
| 9584 | 9434 |
| 9585 EXPECT_CALL(*gl_, GetError()) | 9435 EXPECT_CALL(*gl_, GetError()) |
| 9586 .WillOnce(Return(GL_NO_ERROR)) | 9436 .WillOnce(Return(GL_NO_ERROR)) |
| 9587 .WillOnce(Return(GL_NO_ERROR)) | 9437 .WillOnce(Return(GL_NO_ERROR)) |
| 9588 .WillOnce(Return(GL_NO_ERROR)) | 9438 .WillOnce(Return(GL_NO_ERROR)) |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9630 .Times(1) | 9480 .Times(1) |
| 9631 .RetiresOnSaturation(); | 9481 .RetiresOnSaturation(); |
| 9632 cmd.Init( | 9482 cmd.Init( |
| 9633 GL_IMPLEMENTATION_COLOR_READ_TYPE, | 9483 GL_IMPLEMENTATION_COLOR_READ_TYPE, |
| 9634 shared_memory_id_, shared_memory_offset_); | 9484 shared_memory_id_, shared_memory_offset_); |
| 9635 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 9485 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 9636 EXPECT_EQ(1, result->GetNumResults()); | 9486 EXPECT_EQ(1, result->GetNumResults()); |
| 9637 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 9487 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 9638 } | 9488 } |
| 9639 | 9489 |
| 9640 TEST_P(GLES2DecoderManualInitTest, NoReadFormatExtension) { | 9490 TEST_F(GLES2DecoderManualInitTest, NoReadFormatExtension) { |
| 9641 InitState init; | 9491 InitState init; |
| 9642 init.gl_version = "2.1"; | 9492 init.gl_version = "2.1"; |
| 9643 init.bind_generates_resource = true; | 9493 init.bind_generates_resource = true; |
| 9644 InitDecoder(init); | 9494 InitDecoder(init); |
| 9645 | 9495 |
| 9646 EXPECT_CALL(*gl_, GetError()) | 9496 EXPECT_CALL(*gl_, GetError()) |
| 9647 .WillOnce(Return(GL_NO_ERROR)) | 9497 .WillOnce(Return(GL_NO_ERROR)) |
| 9648 .WillOnce(Return(GL_NO_ERROR)) | 9498 .WillOnce(Return(GL_NO_ERROR)) |
| 9649 .WillOnce(Return(GL_NO_ERROR)) | 9499 .WillOnce(Return(GL_NO_ERROR)) |
| 9650 .WillOnce(Return(GL_NO_ERROR)) | 9500 .WillOnce(Return(GL_NO_ERROR)) |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9688 .Times(0) | 9538 .Times(0) |
| 9689 .RetiresOnSaturation(); | 9539 .RetiresOnSaturation(); |
| 9690 cmd.Init( | 9540 cmd.Init( |
| 9691 GL_IMPLEMENTATION_COLOR_READ_TYPE, | 9541 GL_IMPLEMENTATION_COLOR_READ_TYPE, |
| 9692 shared_memory_id_, shared_memory_offset_); | 9542 shared_memory_id_, shared_memory_offset_); |
| 9693 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 9543 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 9694 EXPECT_EQ(1, result->GetNumResults()); | 9544 EXPECT_EQ(1, result->GetNumResults()); |
| 9695 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 9545 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 9696 } | 9546 } |
| 9697 | 9547 |
| 9698 TEST_P(GLES2DecoderManualInitTest, ContextStateCapabilityCaching) { | |
| 9699 struct TestInfo { | |
| 9700 GLenum gl_enum; | |
| 9701 bool default_state; | |
| 9702 bool expect_set; | |
| 9703 }; | |
| 9704 | |
| 9705 // TODO(vmiura): Should autogen this to match build_gles2_cmd_buffer.py. | |
| 9706 TestInfo test[] = {{GL_BLEND, false, true}, | |
| 9707 {GL_CULL_FACE, false, true}, | |
| 9708 {GL_DEPTH_TEST, false, false}, | |
| 9709 {GL_DITHER, true, true}, | |
| 9710 {GL_POLYGON_OFFSET_FILL, false, true}, | |
| 9711 {GL_SAMPLE_ALPHA_TO_COVERAGE, false, true}, | |
| 9712 {GL_SAMPLE_COVERAGE, false, true}, | |
| 9713 {GL_SCISSOR_TEST, false, true}, | |
| 9714 {GL_STENCIL_TEST, false, false}, | |
| 9715 {0, false, false}}; | |
| 9716 | |
| 9717 InitState init; | |
| 9718 init.gl_version = "2.1"; | |
| 9719 InitDecoder(init); | |
| 9720 | |
| 9721 for (int i = 0; test[i].gl_enum; i++) { | |
| 9722 bool enable_state = test[i].default_state; | |
| 9723 | |
| 9724 // Test setting default state initially is ignored. | |
| 9725 EnableDisableTest(test[i].gl_enum, enable_state, test[i].expect_set); | |
| 9726 | |
| 9727 // Test new and cached state changes. | |
| 9728 for (int n = 0; n < 3; n++) { | |
| 9729 enable_state = !enable_state; | |
| 9730 EnableDisableTest(test[i].gl_enum, enable_state, test[i].expect_set); | |
| 9731 EnableDisableTest(test[i].gl_enum, enable_state, test[i].expect_set); | |
| 9732 } | |
| 9733 } | |
| 9734 } | |
| 9735 | |
| 9736 // TODO(gman): Complete this test. | 9548 // TODO(gman): Complete this test. |
| 9737 // TEST_P(GLES2DecoderTest, CompressedTexImage2DGLError) { | 9549 // TEST_F(GLES2DecoderTest, CompressedTexImage2DGLError) { |
| 9738 // } | 9550 // } |
| 9739 | 9551 |
| 9740 // TODO(gman): BufferData | 9552 // TODO(gman): BufferData |
| 9741 | 9553 |
| 9742 // TODO(gman): BufferDataImmediate | 9554 // TODO(gman): BufferDataImmediate |
| 9743 | 9555 |
| 9744 // TODO(gman): BufferSubData | 9556 // TODO(gman): BufferSubData |
| 9745 | 9557 |
| 9746 // TODO(gman): BufferSubDataImmediate | 9558 // TODO(gman): BufferSubDataImmediate |
| 9747 | 9559 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 9760 // TODO(gman): TexImage2D | 9572 // TODO(gman): TexImage2D |
| 9761 | 9573 |
| 9762 // TODO(gman): TexImage2DImmediate | 9574 // TODO(gman): TexImage2DImmediate |
| 9763 | 9575 |
| 9764 // TODO(gman): TexSubImage2DImmediate | 9576 // TODO(gman): TexSubImage2DImmediate |
| 9765 | 9577 |
| 9766 // TODO(gman): UseProgram | 9578 // TODO(gman): UseProgram |
| 9767 | 9579 |
| 9768 // TODO(gman): SwapBuffers | 9580 // TODO(gman): SwapBuffers |
| 9769 | 9581 |
| 9770 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderTest, ::testing::Bool()); | |
| 9771 | |
| 9772 INSTANTIATE_TEST_CASE_P(Service, | |
| 9773 GLES2DecoderGeometryInstancingTest, | |
| 9774 ::testing::Bool()); | |
| 9775 | |
| 9776 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderWithShaderTest, ::testing::Bool()); | |
| 9777 | |
| 9778 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderManualInitTest, ::testing::Bool()); | |
| 9779 | |
| 9780 INSTANTIATE_TEST_CASE_P(Service, | |
| 9781 GLES2DecoderCompressedFormatsTest, | |
| 9782 ::testing::Bool()); | |
| 9783 | |
| 9784 INSTANTIATE_TEST_CASE_P(Service, | |
| 9785 GLES2DecoderRGBBackbufferTest, | |
| 9786 ::testing::Bool()); | |
| 9787 | |
| 9788 INSTANTIATE_TEST_CASE_P(Service, | |
| 9789 GLES2DecoderVertexArraysOESTest, | |
| 9790 ::testing::Bool()); | |
| 9791 | |
| 9792 INSTANTIATE_TEST_CASE_P(Service, | |
| 9793 GLES2DecoderEmulatedVertexArraysOESTest, | |
| 9794 ::testing::Bool()); | |
| 9795 | |
| 9796 INSTANTIATE_TEST_CASE_P(Service, | |
| 9797 GLES2DecoderRestoreStateTest, | |
| 9798 ::testing::Bool()); | |
| 9799 | |
| 9800 INSTANTIATE_TEST_CASE_P(Service, | |
| 9801 GLES2DecoderMultisampledRenderToTextureTest, | |
| 9802 ::testing::Bool()); | |
| 9803 | |
| 9804 } // namespace gles2 | 9582 } // namespace gles2 |
| 9805 } // namespace gpu | 9583 } // namespace gpu |
| OLD | NEW |