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/test_helper.h" | 5 #include "gpu/command_buffer/service/test_helper.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 15 matching lines...) Expand all Loading... |
26 #include "ui/gl/gl_version_info.h" | 26 #include "ui/gl/gl_version_info.h" |
27 | 27 |
28 using ::testing::_; | 28 using ::testing::_; |
29 using ::testing::DoAll; | 29 using ::testing::DoAll; |
30 using ::testing::InSequence; | 30 using ::testing::InSequence; |
31 using ::testing::MatcherCast; | 31 using ::testing::MatcherCast; |
32 using ::testing::Pointee; | 32 using ::testing::Pointee; |
33 using ::testing::NotNull; | 33 using ::testing::NotNull; |
34 using ::testing::Return; | 34 using ::testing::Return; |
35 using ::testing::SetArrayArgument; | 35 using ::testing::SetArrayArgument; |
36 using ::testing::SetArgumentPointee; | 36 using ::testing::SetArgPointee; |
37 using ::testing::SetArgPointee; | 37 using ::testing::SetArgPointee; |
38 using ::testing::StrEq; | 38 using ::testing::StrEq; |
39 using ::testing::StrictMock; | 39 using ::testing::StrictMock; |
40 | 40 |
41 namespace gpu { | 41 namespace gpu { |
42 namespace gles2 { | 42 namespace gles2 { |
43 | 43 |
44 namespace { | 44 namespace { |
45 | 45 |
46 template<typename T> | 46 template<typename T> |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 InSequence sequence; | 344 InSequence sequence; |
345 | 345 |
346 bool enable_es3 = !(context_type == CONTEXT_TYPE_OPENGLES2 || | 346 bool enable_es3 = !(context_type == CONTEXT_TYPE_OPENGLES2 || |
347 context_type == CONTEXT_TYPE_WEBGL1); | 347 context_type == CONTEXT_TYPE_WEBGL1); |
348 | 348 |
349 gl::GLVersionInfo gl_info(gl_version, "", extensions); | 349 gl::GLVersionInfo gl_info(gl_version, "", extensions); |
350 | 350 |
351 SetupFeatureInfoInitExpectationsWithGLVersion(gl, extensions, "", gl_version, | 351 SetupFeatureInfoInitExpectationsWithGLVersion(gl, extensions, "", gl_version, |
352 context_type); | 352 context_type); |
353 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_RENDERBUFFER_SIZE, _)) | 353 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_RENDERBUFFER_SIZE, _)) |
354 .WillOnce(SetArgumentPointee<1>(kMaxRenderbufferSize)) | 354 .WillOnce(SetArgPointee<1>(kMaxRenderbufferSize)) |
355 .RetiresOnSaturation(); | 355 .RetiresOnSaturation(); |
356 if (strstr(extensions, "GL_EXT_framebuffer_multisample") || | 356 if (strstr(extensions, "GL_EXT_framebuffer_multisample") || |
357 strstr(extensions, "GL_EXT_multisampled_render_to_texture") || | 357 strstr(extensions, "GL_EXT_multisampled_render_to_texture") || |
358 gl_info.is_es3 || gl_info.is_desktop_core_profile) { | 358 gl_info.is_es3 || gl_info.is_desktop_core_profile) { |
359 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_SAMPLES, _)) | 359 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_SAMPLES, _)) |
360 .WillOnce(SetArgumentPointee<1>(kMaxSamples)) | 360 .WillOnce(SetArgPointee<1>(kMaxSamples)) |
361 .RetiresOnSaturation(); | 361 .RetiresOnSaturation(); |
362 } else if (strstr(extensions, "GL_IMG_multisampled_render_to_texture")) { | 362 } else if (strstr(extensions, "GL_IMG_multisampled_render_to_texture")) { |
363 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_SAMPLES_IMG, _)) | 363 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_SAMPLES_IMG, _)) |
364 .WillOnce(SetArgumentPointee<1>(kMaxSamples)) | 364 .WillOnce(SetArgPointee<1>(kMaxSamples)) |
365 .RetiresOnSaturation(); | 365 .RetiresOnSaturation(); |
366 } | 366 } |
367 | 367 |
368 if (enable_es3 || | 368 if (enable_es3 || |
369 (!enable_es3 && | 369 (!enable_es3 && |
370 (gl_info.is_desktop_core_profile || | 370 (gl_info.is_desktop_core_profile || |
371 strstr(extensions, "GL_EXT_draw_buffers") || | 371 strstr(extensions, "GL_EXT_draw_buffers") || |
372 strstr(extensions, "GL_ARB_draw_buffers") || | 372 strstr(extensions, "GL_ARB_draw_buffers") || |
373 (gl_info.is_es3 && strstr(extensions, "GL_NV_draw_buffers"))))) { | 373 (gl_info.is_es3 && strstr(extensions, "GL_NV_draw_buffers"))))) { |
374 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_COLOR_ATTACHMENTS_EXT, _)) | 374 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_COLOR_ATTACHMENTS_EXT, _)) |
375 .WillOnce(SetArgumentPointee<1>(8)) | 375 .WillOnce(SetArgPointee<1>(8)) |
376 .RetiresOnSaturation(); | 376 .RetiresOnSaturation(); |
377 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_DRAW_BUFFERS_ARB, _)) | 377 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_DRAW_BUFFERS_ARB, _)) |
378 .WillOnce(SetArgumentPointee<1>(8)) | 378 .WillOnce(SetArgPointee<1>(8)) |
379 .RetiresOnSaturation(); | 379 .RetiresOnSaturation(); |
380 } | 380 } |
381 | 381 |
382 if (gl_info.IsAtLeastGL(3, 3) || | 382 if (gl_info.IsAtLeastGL(3, 3) || |
383 (gl_info.IsAtLeastGL(3, 2) && | 383 (gl_info.IsAtLeastGL(3, 2) && |
384 strstr(extensions, "GL_ARB_blend_func_extended")) || | 384 strstr(extensions, "GL_ARB_blend_func_extended")) || |
385 (gl_info.is_es && strstr(extensions, "GL_EXT_blend_func_extended"))) { | 385 (gl_info.is_es && strstr(extensions, "GL_EXT_blend_func_extended"))) { |
386 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT, _)) | 386 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT, _)) |
387 .WillOnce(SetArgumentPointee<1>(8)) | 387 .WillOnce(SetArgPointee<1>(8)) |
388 .RetiresOnSaturation(); | 388 .RetiresOnSaturation(); |
389 } | 389 } |
390 | 390 |
391 if (gl_info.is_es3_capable) { | 391 if (gl_info.is_es3_capable) { |
392 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, _)) | 392 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, _)) |
393 .WillOnce(SetArgumentPointee<1>(kMaxTransformFeedbackSeparateAttribs)) | 393 .WillOnce(SetArgPointee<1>(kMaxTransformFeedbackSeparateAttribs)) |
394 .RetiresOnSaturation(); | 394 .RetiresOnSaturation(); |
395 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_UNIFORM_BUFFER_BINDINGS, _)) | 395 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_UNIFORM_BUFFER_BINDINGS, _)) |
396 .WillOnce(SetArgumentPointee<1>(kMaxUniformBufferBindings)) | 396 .WillOnce(SetArgPointee<1>(kMaxUniformBufferBindings)) |
397 .RetiresOnSaturation(); | 397 .RetiresOnSaturation(); |
398 EXPECT_CALL(*gl, GetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, _)) | 398 EXPECT_CALL(*gl, GetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, _)) |
399 .WillOnce(SetArgumentPointee<1>(kUniformBufferOffsetAlignment)) | 399 .WillOnce(SetArgPointee<1>(kUniformBufferOffsetAlignment)) |
400 .RetiresOnSaturation(); | 400 .RetiresOnSaturation(); |
401 } | 401 } |
402 | 402 |
403 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_ATTRIBS, _)) | 403 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_ATTRIBS, _)) |
404 .WillOnce(SetArgumentPointee<1>(kNumVertexAttribs)) | 404 .WillOnce(SetArgPointee<1>(kNumVertexAttribs)) |
405 .RetiresOnSaturation(); | 405 .RetiresOnSaturation(); |
406 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, _)) | 406 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, _)) |
407 .WillOnce(SetArgumentPointee<1>(kNumTextureUnits)) | 407 .WillOnce(SetArgPointee<1>(kNumTextureUnits)) |
408 .RetiresOnSaturation(); | 408 .RetiresOnSaturation(); |
409 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_TEXTURE_SIZE, _)) | 409 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_TEXTURE_SIZE, _)) |
410 .WillOnce(SetArgumentPointee<1>(kMaxTextureSize)) | 410 .WillOnce(SetArgPointee<1>(kMaxTextureSize)) |
411 .RetiresOnSaturation(); | 411 .RetiresOnSaturation(); |
412 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, _)) | 412 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, _)) |
413 .WillOnce(SetArgumentPointee<1>(kMaxCubeMapTextureSize)) | 413 .WillOnce(SetArgPointee<1>(kMaxCubeMapTextureSize)) |
414 .RetiresOnSaturation(); | 414 .RetiresOnSaturation(); |
415 if (gl_info.is_es3_capable) { | 415 if (gl_info.is_es3_capable) { |
416 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_3D_TEXTURE_SIZE, _)) | 416 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_3D_TEXTURE_SIZE, _)) |
417 .WillOnce(SetArgumentPointee<1>(kMax3DTextureSize)) | 417 .WillOnce(SetArgPointee<1>(kMax3DTextureSize)) |
418 .RetiresOnSaturation(); | 418 .RetiresOnSaturation(); |
419 } | 419 } |
420 if (gl_info.is_es3_capable) { | 420 if (gl_info.is_es3_capable) { |
421 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_ARRAY_TEXTURE_LAYERS, _)) | 421 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_ARRAY_TEXTURE_LAYERS, _)) |
422 .WillOnce(SetArgumentPointee<1>(kMaxArrayTextureLayers)) | 422 .WillOnce(SetArgPointee<1>(kMaxArrayTextureLayers)) |
423 .RetiresOnSaturation(); | 423 .RetiresOnSaturation(); |
424 } | 424 } |
425 if (strstr(extensions, "GL_ARB_texture_rectangle") || | 425 if (strstr(extensions, "GL_ARB_texture_rectangle") || |
426 gl_info.is_desktop_core_profile) { | 426 gl_info.is_desktop_core_profile) { |
427 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_RECTANGLE_TEXTURE_SIZE, _)) | 427 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_RECTANGLE_TEXTURE_SIZE, _)) |
428 .WillOnce(SetArgumentPointee<1>(kMaxRectangleTextureSize)) | 428 .WillOnce(SetArgPointee<1>(kMaxRectangleTextureSize)) |
429 .RetiresOnSaturation(); | 429 .RetiresOnSaturation(); |
430 } | 430 } |
431 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, _)) | 431 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, _)) |
432 .WillOnce(SetArgumentPointee<1>(kMaxTextureImageUnits)) | 432 .WillOnce(SetArgPointee<1>(kMaxTextureImageUnits)) |
433 .RetiresOnSaturation(); | 433 .RetiresOnSaturation(); |
434 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, _)) | 434 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, _)) |
435 .WillOnce(SetArgumentPointee<1>(kMaxVertexTextureImageUnits)) | 435 .WillOnce(SetArgPointee<1>(kMaxVertexTextureImageUnits)) |
436 .RetiresOnSaturation(); | 436 .RetiresOnSaturation(); |
437 | 437 |
438 if (gl_info.is_es || gl_info.is_desktop_core_profile) { | 438 if (gl_info.is_es || gl_info.is_desktop_core_profile) { |
439 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_FRAGMENT_UNIFORM_VECTORS, _)) | 439 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_FRAGMENT_UNIFORM_VECTORS, _)) |
440 .WillOnce(SetArgumentPointee<1>(kMaxFragmentUniformVectors)) | 440 .WillOnce(SetArgPointee<1>(kMaxFragmentUniformVectors)) |
441 .RetiresOnSaturation(); | 441 .RetiresOnSaturation(); |
442 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VARYING_VECTORS, _)) | 442 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VARYING_VECTORS, _)) |
443 .WillOnce(SetArgumentPointee<1>(kMaxVaryingVectors)) | 443 .WillOnce(SetArgPointee<1>(kMaxVaryingVectors)) |
444 .RetiresOnSaturation(); | 444 .RetiresOnSaturation(); |
445 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_UNIFORM_VECTORS, _)) | 445 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_UNIFORM_VECTORS, _)) |
446 .WillOnce(SetArgumentPointee<1>(kMaxVertexUniformVectors)) | 446 .WillOnce(SetArgPointee<1>(kMaxVertexUniformVectors)) |
447 .RetiresOnSaturation(); | 447 .RetiresOnSaturation(); |
448 } else { | 448 } else { |
449 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, _)) | 449 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, _)) |
450 .WillOnce(SetArgumentPointee<1>(kMaxFragmentUniformComponents)) | 450 .WillOnce(SetArgPointee<1>(kMaxFragmentUniformComponents)) |
451 .RetiresOnSaturation(); | 451 .RetiresOnSaturation(); |
452 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VARYING_FLOATS, _)) | 452 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VARYING_FLOATS, _)) |
453 .WillOnce(SetArgumentPointee<1>(kMaxVaryingFloats)) | 453 .WillOnce(SetArgPointee<1>(kMaxVaryingFloats)) |
454 .RetiresOnSaturation(); | 454 .RetiresOnSaturation(); |
455 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, _)) | 455 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, _)) |
456 .WillOnce(SetArgumentPointee<1>(kMaxVertexUniformComponents)) | 456 .WillOnce(SetArgPointee<1>(kMaxVertexUniformComponents)) |
457 .RetiresOnSaturation(); | 457 .RetiresOnSaturation(); |
458 } | 458 } |
459 | 459 |
460 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_OUTPUT_COMPONENTS, _)) | 460 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_OUTPUT_COMPONENTS, _)) |
461 .Times(testing::Between(0, 1)) | 461 .Times(testing::Between(0, 1)) |
462 .WillRepeatedly(SetArgumentPointee<1>(kMaxVertexOutputComponents)) | 462 .WillRepeatedly(SetArgPointee<1>(kMaxVertexOutputComponents)) |
463 .RetiresOnSaturation(); | 463 .RetiresOnSaturation(); |
464 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_FRAGMENT_INPUT_COMPONENTS, _)) | 464 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_FRAGMENT_INPUT_COMPONENTS, _)) |
465 .Times(testing::Between(0, 1)) | 465 .Times(testing::Between(0, 1)) |
466 .WillRepeatedly(SetArgumentPointee<1>(kMaxFragmentInputComponents)) | 466 .WillRepeatedly(SetArgPointee<1>(kMaxFragmentInputComponents)) |
467 .RetiresOnSaturation(); | 467 .RetiresOnSaturation(); |
468 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_PROGRAM_TEXEL_OFFSET, _)) | 468 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_PROGRAM_TEXEL_OFFSET, _)) |
469 .Times(testing::Between(0, 1)) | 469 .Times(testing::Between(0, 1)) |
470 .WillRepeatedly(SetArgumentPointee<1>(kMaxProgramTexelOffset)) | 470 .WillRepeatedly(SetArgPointee<1>(kMaxProgramTexelOffset)) |
471 .RetiresOnSaturation(); | 471 .RetiresOnSaturation(); |
472 EXPECT_CALL(*gl, GetIntegerv(GL_MIN_PROGRAM_TEXEL_OFFSET, _)) | 472 EXPECT_CALL(*gl, GetIntegerv(GL_MIN_PROGRAM_TEXEL_OFFSET, _)) |
473 .Times(testing::Between(0, 1)) | 473 .Times(testing::Between(0, 1)) |
474 .WillRepeatedly(SetArgumentPointee<1>(kMinProgramTexelOffset)) | 474 .WillRepeatedly(SetArgPointee<1>(kMinProgramTexelOffset)) |
475 .RetiresOnSaturation(); | 475 .RetiresOnSaturation(); |
476 | 476 |
477 bool use_default_textures = bind_generates_resource; | 477 bool use_default_textures = bind_generates_resource; |
478 SetupTextureManagerInitExpectations( | 478 SetupTextureManagerInitExpectations( |
479 gl, enable_es3, gl_info.is_es3_capable, gl_info.is_desktop_core_profile, | 479 gl, enable_es3, gl_info.is_es3_capable, gl_info.is_desktop_core_profile, |
480 extensions, use_default_textures); | 480 extensions, use_default_textures); |
481 } | 481 } |
482 | 482 |
483 void TestHelper::SetupFeatureInfoInitExpectations(::gl::MockGLInterface* gl, | 483 void TestHelper::SetupFeatureInfoInitExpectations(::gl::MockGLInterface* gl, |
484 const char* extensions) { | 484 const char* extensions) { |
(...skipping 19 matching lines...) Expand all Loading... |
504 // Persistent storage is needed for the split extension string. | 504 // Persistent storage is needed for the split extension string. |
505 split_extensions_.clear(); | 505 split_extensions_.clear(); |
506 if (extensions) { | 506 if (extensions) { |
507 split_extensions_ = base::SplitString( | 507 split_extensions_ = base::SplitString( |
508 extensions, " ", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); | 508 extensions, " ", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); |
509 } | 509 } |
510 | 510 |
511 gl::GLVersionInfo gl_info(gl_version, gl_renderer, extensions); | 511 gl::GLVersionInfo gl_info(gl_version, gl_renderer, extensions); |
512 if (!gl_info.is_es && gl_info.major_version >= 3) { | 512 if (!gl_info.is_es && gl_info.major_version >= 3) { |
513 EXPECT_CALL(*gl, GetIntegerv(GL_NUM_EXTENSIONS, _)) | 513 EXPECT_CALL(*gl, GetIntegerv(GL_NUM_EXTENSIONS, _)) |
514 .WillOnce(SetArgumentPointee<1>(split_extensions_.size())) | 514 .WillOnce(SetArgPointee<1>(split_extensions_.size())) |
515 .RetiresOnSaturation(); | 515 .RetiresOnSaturation(); |
516 for (size_t ii = 0; ii < split_extensions_.size(); ++ii) { | 516 for (size_t ii = 0; ii < split_extensions_.size(); ++ii) { |
517 EXPECT_CALL(*gl, GetStringi(GL_EXTENSIONS, ii)) | 517 EXPECT_CALL(*gl, GetStringi(GL_EXTENSIONS, ii)) |
518 .WillOnce(Return( | 518 .WillOnce(Return( |
519 reinterpret_cast<const uint8_t*>(split_extensions_[ii].c_str()))) | 519 reinterpret_cast<const uint8_t*>(split_extensions_[ii].c_str()))) |
520 .RetiresOnSaturation(); | 520 .RetiresOnSaturation(); |
521 } | 521 } |
522 } else { | 522 } else { |
523 EXPECT_CALL(*gl, GetString(GL_EXTENSIONS)) | 523 EXPECT_CALL(*gl, GetString(GL_EXTENSIONS)) |
524 .WillOnce(Return(reinterpret_cast<const uint8_t*>(extensions))) | 524 .WillOnce(Return(reinterpret_cast<const uint8_t*>(extensions))) |
(...skipping 14 matching lines...) Expand all Loading... |
539 } | 539 } |
540 | 540 |
541 if ((strstr(extensions, "GL_ARB_texture_float") || | 541 if ((strstr(extensions, "GL_ARB_texture_float") || |
542 gl_info.is_desktop_core_profile) || | 542 gl_info.is_desktop_core_profile) || |
543 (gl_info.is_es3 && strstr(extensions, "GL_OES_texture_float") && | 543 (gl_info.is_es3 && strstr(extensions, "GL_OES_texture_float") && |
544 strstr(extensions, "GL_EXT_color_buffer_float"))) { | 544 strstr(extensions, "GL_EXT_color_buffer_float"))) { |
545 static const GLuint tx_ids[] = {101, 102}; | 545 static const GLuint tx_ids[] = {101, 102}; |
546 static const GLuint fb_ids[] = {103, 104}; | 546 static const GLuint fb_ids[] = {103, 104}; |
547 const GLsizei width = 16; | 547 const GLsizei width = 16; |
548 EXPECT_CALL(*gl, GetIntegerv(GL_FRAMEBUFFER_BINDING, _)) | 548 EXPECT_CALL(*gl, GetIntegerv(GL_FRAMEBUFFER_BINDING, _)) |
549 .WillOnce(SetArgumentPointee<1>(fb_ids[0])) | 549 .WillOnce(SetArgPointee<1>(fb_ids[0])) |
550 .RetiresOnSaturation(); | 550 .RetiresOnSaturation(); |
551 EXPECT_CALL(*gl, GetIntegerv(GL_TEXTURE_BINDING_2D, _)) | 551 EXPECT_CALL(*gl, GetIntegerv(GL_TEXTURE_BINDING_2D, _)) |
552 .WillOnce(SetArgumentPointee<1>(tx_ids[0])) | 552 .WillOnce(SetArgPointee<1>(tx_ids[0])) |
553 .RetiresOnSaturation(); | 553 .RetiresOnSaturation(); |
554 EXPECT_CALL(*gl, GenTextures(1, _)) | 554 EXPECT_CALL(*gl, GenTextures(1, _)) |
555 .WillOnce(SetArrayArgument<1>(tx_ids + 1, tx_ids + 2)) | 555 .WillOnce(SetArrayArgument<1>(tx_ids + 1, tx_ids + 2)) |
556 .RetiresOnSaturation(); | 556 .RetiresOnSaturation(); |
557 EXPECT_CALL(*gl, GenFramebuffersEXT(1, _)) | 557 EXPECT_CALL(*gl, GenFramebuffersEXT(1, _)) |
558 .WillOnce(SetArrayArgument<1>(fb_ids + 1, fb_ids + 2)) | 558 .WillOnce(SetArrayArgument<1>(fb_ids + 1, fb_ids + 2)) |
559 .RetiresOnSaturation(); | 559 .RetiresOnSaturation(); |
560 EXPECT_CALL(*gl, BindTexture(GL_TEXTURE_2D, tx_ids[1])) | 560 EXPECT_CALL(*gl, BindTexture(GL_TEXTURE_2D, tx_ids[1])) |
561 .Times(1) | 561 .Times(1) |
562 .RetiresOnSaturation(); | 562 .RetiresOnSaturation(); |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
684 #endif | 684 #endif |
685 } | 685 } |
686 | 686 |
687 if (enable_es3 || | 687 if (enable_es3 || |
688 (!enable_es3 && | 688 (!enable_es3 && |
689 (gl_info.is_desktop_core_profile || | 689 (gl_info.is_desktop_core_profile || |
690 strstr(extensions, "GL_EXT_draw_buffers") || | 690 strstr(extensions, "GL_EXT_draw_buffers") || |
691 strstr(extensions, "GL_ARB_draw_buffers") || | 691 strstr(extensions, "GL_ARB_draw_buffers") || |
692 (gl_info.is_es3 && strstr(extensions, "GL_NV_draw_buffers"))))) { | 692 (gl_info.is_es3 && strstr(extensions, "GL_NV_draw_buffers"))))) { |
693 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_COLOR_ATTACHMENTS_EXT, _)) | 693 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_COLOR_ATTACHMENTS_EXT, _)) |
694 .WillOnce(SetArgumentPointee<1>(8)) | 694 .WillOnce(SetArgPointee<1>(8)) |
695 .RetiresOnSaturation(); | 695 .RetiresOnSaturation(); |
696 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_DRAW_BUFFERS_ARB, _)) | 696 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_DRAW_BUFFERS_ARB, _)) |
697 .WillOnce(SetArgumentPointee<1>(8)) | 697 .WillOnce(SetArgPointee<1>(8)) |
698 .RetiresOnSaturation(); | 698 .RetiresOnSaturation(); |
699 } | 699 } |
700 | 700 |
701 if (gl_info.is_es3 || gl_info.is_desktop_core_profile || | 701 if (gl_info.is_es3 || gl_info.is_desktop_core_profile || |
702 strstr(extensions, "GL_EXT_texture_rg") || | 702 strstr(extensions, "GL_EXT_texture_rg") || |
703 (strstr(extensions, "GL_ARB_texture_rg"))) { | 703 (strstr(extensions, "GL_ARB_texture_rg"))) { |
704 static const GLuint tx_ids[] = {101, 102}; | 704 static const GLuint tx_ids[] = {101, 102}; |
705 static const GLuint fb_ids[] = {103, 104}; | 705 static const GLuint fb_ids[] = {103, 104}; |
706 const GLsizei width = 1; | 706 const GLsizei width = 1; |
707 EXPECT_CALL(*gl, GetIntegerv(GL_FRAMEBUFFER_BINDING, _)) | 707 EXPECT_CALL(*gl, GetIntegerv(GL_FRAMEBUFFER_BINDING, _)) |
708 .WillOnce(SetArgumentPointee<1>(fb_ids[0])) | 708 .WillOnce(SetArgPointee<1>(fb_ids[0])) |
709 .RetiresOnSaturation(); | 709 .RetiresOnSaturation(); |
710 EXPECT_CALL(*gl, GetIntegerv(GL_TEXTURE_BINDING_2D, _)) | 710 EXPECT_CALL(*gl, GetIntegerv(GL_TEXTURE_BINDING_2D, _)) |
711 .WillOnce(SetArgumentPointee<1>(tx_ids[0])) | 711 .WillOnce(SetArgPointee<1>(tx_ids[0])) |
712 .RetiresOnSaturation(); | 712 .RetiresOnSaturation(); |
713 EXPECT_CALL(*gl, GenTextures(1, _)) | 713 EXPECT_CALL(*gl, GenTextures(1, _)) |
714 .WillOnce(SetArrayArgument<1>(tx_ids + 1, tx_ids + 2)) | 714 .WillOnce(SetArrayArgument<1>(tx_ids + 1, tx_ids + 2)) |
715 .RetiresOnSaturation(); | 715 .RetiresOnSaturation(); |
716 EXPECT_CALL(*gl, BindTexture(GL_TEXTURE_2D, tx_ids[1])) | 716 EXPECT_CALL(*gl, BindTexture(GL_TEXTURE_2D, tx_ids[1])) |
717 .Times(1) | 717 .Times(1) |
718 .RetiresOnSaturation(); | 718 .RetiresOnSaturation(); |
719 EXPECT_CALL(*gl, TexImage2D(GL_TEXTURE_2D, 0, _, width, width, 0, | 719 EXPECT_CALL(*gl, TexImage2D(GL_TEXTURE_2D, 0, _, width, width, 0, |
720 GL_RED_EXT, GL_UNSIGNED_BYTE, _)) | 720 GL_RED_EXT, GL_UNSIGNED_BYTE, _)) |
721 .Times(1) | 721 .Times(1) |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
859 const FeatureInfo* feature_info, | 859 const FeatureInfo* feature_info, |
860 AttribInfo* attribs, | 860 AttribInfo* attribs, |
861 size_t num_attribs, | 861 size_t num_attribs, |
862 UniformInfo* uniforms, | 862 UniformInfo* uniforms, |
863 size_t num_uniforms, | 863 size_t num_uniforms, |
864 VaryingInfo* varyings, | 864 VaryingInfo* varyings, |
865 size_t num_varyings, | 865 size_t num_varyings, |
866 ProgramOutputInfo* program_outputs, | 866 ProgramOutputInfo* program_outputs, |
867 size_t num_program_outputs, | 867 size_t num_program_outputs, |
868 GLuint service_id) { | 868 GLuint service_id) { |
869 EXPECT_CALL(*gl, | 869 EXPECT_CALL(*gl, GetProgramiv(service_id, GL_LINK_STATUS, _)) |
870 GetProgramiv(service_id, GL_LINK_STATUS, _)) | 870 .WillOnce(SetArgPointee<2>(1)) |
871 .WillOnce(SetArgumentPointee<2>(1)) | |
872 .RetiresOnSaturation(); | 871 .RetiresOnSaturation(); |
873 EXPECT_CALL(*gl, | 872 EXPECT_CALL(*gl, GetProgramiv(service_id, GL_INFO_LOG_LENGTH, _)) |
874 GetProgramiv(service_id, GL_INFO_LOG_LENGTH, _)) | 873 .WillOnce(SetArgPointee<2>(0)) |
875 .WillOnce(SetArgumentPointee<2>(0)) | |
876 .RetiresOnSaturation(); | 874 .RetiresOnSaturation(); |
877 EXPECT_CALL(*gl, | 875 EXPECT_CALL(*gl, GetProgramiv(service_id, GL_ACTIVE_ATTRIBUTES, _)) |
878 GetProgramiv(service_id, GL_ACTIVE_ATTRIBUTES, _)) | 876 .WillOnce(SetArgPointee<2>(num_attribs)) |
879 .WillOnce(SetArgumentPointee<2>(num_attribs)) | |
880 .RetiresOnSaturation(); | 877 .RetiresOnSaturation(); |
881 size_t max_attrib_len = 0; | 878 size_t max_attrib_len = 0; |
882 for (size_t ii = 0; ii < num_attribs; ++ii) { | 879 for (size_t ii = 0; ii < num_attribs; ++ii) { |
883 size_t len = strlen(attribs[ii].name) + 1; | 880 size_t len = strlen(attribs[ii].name) + 1; |
884 max_attrib_len = std::max(max_attrib_len, len); | 881 max_attrib_len = std::max(max_attrib_len, len); |
885 } | 882 } |
886 EXPECT_CALL(*gl, | 883 EXPECT_CALL(*gl, GetProgramiv(service_id, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, _)) |
887 GetProgramiv(service_id, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, _)) | 884 .WillOnce(SetArgPointee<2>(max_attrib_len)) |
888 .WillOnce(SetArgumentPointee<2>(max_attrib_len)) | |
889 .RetiresOnSaturation(); | 885 .RetiresOnSaturation(); |
890 | 886 |
891 for (size_t ii = 0; ii < num_attribs; ++ii) { | 887 for (size_t ii = 0; ii < num_attribs; ++ii) { |
892 const AttribInfo& info = attribs[ii]; | 888 const AttribInfo& info = attribs[ii]; |
893 EXPECT_CALL(*gl, | 889 EXPECT_CALL(*gl, |
894 GetActiveAttrib(service_id, ii, | 890 GetActiveAttrib(service_id, ii, max_attrib_len, _, _, _, _)) |
895 max_attrib_len, _, _, _, _)) | |
896 .WillOnce(DoAll( | 891 .WillOnce(DoAll( |
897 SetArgumentPointee<3>(strlen(info.name)), | 892 SetArgPointee<3>(strlen(info.name)), SetArgPointee<4>(info.size), |
898 SetArgumentPointee<4>(info.size), | 893 SetArgPointee<5>(info.type), |
899 SetArgumentPointee<5>(info.type), | 894 SetArrayArgument<6>(info.name, info.name + strlen(info.name) + 1))) |
900 SetArrayArgument<6>(info.name, | |
901 info.name + strlen(info.name) + 1))) | |
902 .RetiresOnSaturation(); | 895 .RetiresOnSaturation(); |
903 if (!ProgramManager::HasBuiltInPrefix(info.name)) { | 896 if (!ProgramManager::HasBuiltInPrefix(info.name)) { |
904 EXPECT_CALL(*gl, GetAttribLocation(service_id, StrEq(info.name))) | 897 EXPECT_CALL(*gl, GetAttribLocation(service_id, StrEq(info.name))) |
905 .WillOnce(Return(info.location)) | 898 .WillOnce(Return(info.location)) |
906 .RetiresOnSaturation(); | 899 .RetiresOnSaturation(); |
907 } | 900 } |
908 } | 901 } |
909 EXPECT_CALL(*gl, | 902 EXPECT_CALL(*gl, GetProgramiv(service_id, GL_ACTIVE_UNIFORMS, _)) |
910 GetProgramiv(service_id, GL_ACTIVE_UNIFORMS, _)) | 903 .WillOnce(SetArgPointee<2>(num_uniforms)) |
911 .WillOnce(SetArgumentPointee<2>(num_uniforms)) | |
912 .RetiresOnSaturation(); | 904 .RetiresOnSaturation(); |
913 | 905 |
914 if (num_uniforms > 0) { | 906 if (num_uniforms > 0) { |
915 size_t max_uniform_len = 0; | 907 size_t max_uniform_len = 0; |
916 for (size_t ii = 0; ii < num_uniforms; ++ii) { | 908 for (size_t ii = 0; ii < num_uniforms; ++ii) { |
917 size_t len = strlen(uniforms[ii].name) + 1; | 909 size_t len = strlen(uniforms[ii].name) + 1; |
918 max_uniform_len = std::max(max_uniform_len, len); | 910 max_uniform_len = std::max(max_uniform_len, len); |
919 } | 911 } |
920 EXPECT_CALL(*gl, GetProgramiv(service_id, GL_ACTIVE_UNIFORM_MAX_LENGTH, _)) | 912 EXPECT_CALL(*gl, GetProgramiv(service_id, GL_ACTIVE_UNIFORM_MAX_LENGTH, _)) |
921 .WillOnce(SetArgumentPointee<2>(max_uniform_len)) | 913 .WillOnce(SetArgPointee<2>(max_uniform_len)) |
922 .RetiresOnSaturation(); | 914 .RetiresOnSaturation(); |
923 for (size_t ii = 0; ii < num_uniforms; ++ii) { | 915 for (size_t ii = 0; ii < num_uniforms; ++ii) { |
924 const UniformInfo& info = uniforms[ii]; | 916 const UniformInfo& info = uniforms[ii]; |
925 EXPECT_CALL(*gl, | 917 EXPECT_CALL(*gl, |
926 GetActiveUniform(service_id, ii, max_uniform_len, _, _, _, _)) | 918 GetActiveUniform(service_id, ii, max_uniform_len, _, _, _, _)) |
927 .WillOnce(DoAll(SetArgumentPointee<3>(strlen(info.name)), | 919 .WillOnce(DoAll(SetArgPointee<3>(strlen(info.name)), |
928 SetArgumentPointee<4>(info.size), | 920 SetArgPointee<4>(info.size), |
929 SetArgumentPointee<5>(info.type), | 921 SetArgPointee<5>(info.type), |
930 SetArrayArgument<6>( | 922 SetArrayArgument<6>( |
931 info.name, info.name + strlen(info.name) + 1))) | 923 info.name, info.name + strlen(info.name) + 1))) |
932 .RetiresOnSaturation(); | 924 .RetiresOnSaturation(); |
933 | 925 |
934 if (info.real_location != -1) { | 926 if (info.real_location != -1) { |
935 EXPECT_CALL(*gl, GetUniformLocation(service_id, StrEq(info.name))) | 927 EXPECT_CALL(*gl, GetUniformLocation(service_id, StrEq(info.name))) |
936 .WillOnce(Return(info.real_location)) | 928 .WillOnce(Return(info.real_location)) |
937 .RetiresOnSaturation(); | 929 .RetiresOnSaturation(); |
938 } | 930 } |
939 if (info.size > 1) { | 931 if (info.size > 1) { |
940 std::string base_name = info.name; | 932 std::string base_name = info.name; |
941 size_t array_pos = base_name.rfind("[0]"); | 933 size_t array_pos = base_name.rfind("[0]"); |
942 if (base_name.size() > 3 && array_pos == base_name.size() - 3) { | 934 if (base_name.size() > 3 && array_pos == base_name.size() - 3) { |
943 base_name = base_name.substr(0, base_name.size() - 3); | 935 base_name = base_name.substr(0, base_name.size() - 3); |
944 } | 936 } |
945 for (GLsizei jj = 1; jj < info.size; ++jj) { | 937 for (GLsizei jj = 1; jj < info.size; ++jj) { |
946 std::string element_name(std::string(base_name) + "[" + | 938 std::string element_name(std::string(base_name) + "[" + |
947 base::IntToString(jj) + "]"); | 939 base::IntToString(jj) + "]"); |
948 EXPECT_CALL(*gl, GetUniformLocation(service_id, StrEq(element_name))) | 940 EXPECT_CALL(*gl, GetUniformLocation(service_id, StrEq(element_name))) |
949 .WillOnce(Return(info.real_location + jj * 2)) | 941 .WillOnce(Return(info.real_location + jj * 2)) |
950 .RetiresOnSaturation(); | 942 .RetiresOnSaturation(); |
951 } | 943 } |
952 } | 944 } |
953 } | 945 } |
954 } | 946 } |
955 | 947 |
956 if (feature_info->feature_flags().chromium_path_rendering) { | 948 if (feature_info->feature_flags().chromium_path_rendering) { |
957 EXPECT_CALL(*gl, GetProgramInterfaceiv(service_id, GL_FRAGMENT_INPUT_NV, | 949 EXPECT_CALL(*gl, GetProgramInterfaceiv(service_id, GL_FRAGMENT_INPUT_NV, |
958 GL_ACTIVE_RESOURCES, _)) | 950 GL_ACTIVE_RESOURCES, _)) |
959 .WillOnce(SetArgumentPointee<3>(int(num_varyings))) | 951 .WillOnce(SetArgPointee<3>(int(num_varyings))) |
960 .RetiresOnSaturation(); | 952 .RetiresOnSaturation(); |
961 size_t max_varying_len = 0; | 953 size_t max_varying_len = 0; |
962 for (size_t ii = 0; ii < num_varyings; ++ii) { | 954 for (size_t ii = 0; ii < num_varyings; ++ii) { |
963 size_t len = strlen(varyings[ii].name) + 1; | 955 size_t len = strlen(varyings[ii].name) + 1; |
964 max_varying_len = std::max(max_varying_len, len); | 956 max_varying_len = std::max(max_varying_len, len); |
965 } | 957 } |
966 EXPECT_CALL(*gl, GetProgramInterfaceiv(service_id, GL_FRAGMENT_INPUT_NV, | 958 EXPECT_CALL(*gl, GetProgramInterfaceiv(service_id, GL_FRAGMENT_INPUT_NV, |
967 GL_MAX_NAME_LENGTH, _)) | 959 GL_MAX_NAME_LENGTH, _)) |
968 .WillOnce(SetArgumentPointee<3>(int(max_varying_len))) | 960 .WillOnce(SetArgPointee<3>(int(max_varying_len))) |
969 .RetiresOnSaturation(); | 961 .RetiresOnSaturation(); |
970 for (size_t ii = 0; ii < num_varyings; ++ii) { | 962 for (size_t ii = 0; ii < num_varyings; ++ii) { |
971 VaryingInfo& info = varyings[ii]; | 963 VaryingInfo& info = varyings[ii]; |
972 EXPECT_CALL(*gl, GetProgramResourceName(service_id, GL_FRAGMENT_INPUT_NV, | 964 EXPECT_CALL(*gl, GetProgramResourceName(service_id, GL_FRAGMENT_INPUT_NV, |
973 ii, max_varying_len, _, _)) | 965 ii, max_varying_len, _, _)) |
974 .WillOnce(DoAll(SetArgumentPointee<4>(strlen(info.name)), | 966 .WillOnce(DoAll(SetArgPointee<4>(strlen(info.name)), |
975 SetArrayArgument<5>( | 967 SetArrayArgument<5>( |
976 info.name, info.name + strlen(info.name) + 1))) | 968 info.name, info.name + strlen(info.name) + 1))) |
977 .RetiresOnSaturation(); | 969 .RetiresOnSaturation(); |
978 if (ProgramManager::HasBuiltInPrefix(info.name)) | 970 if (ProgramManager::HasBuiltInPrefix(info.name)) |
979 continue; | 971 continue; |
980 | 972 |
981 static const GLenum kPropsArray[] = {GL_LOCATION, GL_TYPE, | 973 static const GLenum kPropsArray[] = {GL_LOCATION, GL_TYPE, |
982 GL_ARRAY_SIZE}; | 974 GL_ARRAY_SIZE}; |
983 static const size_t kPropsSize = arraysize(kPropsArray); | 975 static const size_t kPropsSize = arraysize(kPropsArray); |
984 EXPECT_CALL( | 976 EXPECT_CALL( |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1157 scoped_refptr<ShaderTranslatorInterface> translator(mock_translator); | 1149 scoped_refptr<ShaderTranslatorInterface> translator(mock_translator); |
1158 EXPECT_CALL(*mock_translator, Translate(_, | 1150 EXPECT_CALL(*mock_translator, Translate(_, |
1159 NotNull(), // log_info | 1151 NotNull(), // log_info |
1160 NotNull(), // translated_source | 1152 NotNull(), // translated_source |
1161 NotNull(), // shader_version | 1153 NotNull(), // shader_version |
1162 NotNull(), // attrib_map | 1154 NotNull(), // attrib_map |
1163 NotNull(), // uniform_map | 1155 NotNull(), // uniform_map |
1164 NotNull(), // varying_map | 1156 NotNull(), // varying_map |
1165 NotNull(), // interface_block_map | 1157 NotNull(), // interface_block_map |
1166 NotNull())) // output_variable_list | 1158 NotNull())) // output_variable_list |
1167 .WillOnce(DoAll(SetArgumentPointee<1>(*log_info), | 1159 .WillOnce(DoAll( |
1168 SetArgumentPointee<2>(*translated_source), | 1160 SetArgPointee<1>(*log_info), SetArgPointee<2>(*translated_source), |
1169 SetArgumentPointee<3>(*shader_version), | 1161 SetArgPointee<3>(*shader_version), SetArgPointee<4>(*attrib_map), |
1170 SetArgumentPointee<4>(*attrib_map), | 1162 SetArgPointee<5>(*uniform_map), SetArgPointee<6>(*varying_map), |
1171 SetArgumentPointee<5>(*uniform_map), | 1163 SetArgPointee<7>(*interface_block_map), |
1172 SetArgumentPointee<6>(*varying_map), | 1164 SetArgPointee<8>(*output_variable_list), Return(expected_valid))) |
1173 SetArgumentPointee<7>(*interface_block_map), | |
1174 SetArgumentPointee<8>(*output_variable_list), | |
1175 Return(expected_valid))) | |
1176 .RetiresOnSaturation(); | 1165 .RetiresOnSaturation(); |
1177 if (expected_valid) { | 1166 if (expected_valid) { |
1178 EXPECT_CALL(*gl, ShaderSource(shader->service_id(), 1, _, NULL)) | 1167 EXPECT_CALL(*gl, ShaderSource(shader->service_id(), 1, _, NULL)) |
1179 .Times(1) | 1168 .Times(1) |
1180 .RetiresOnSaturation(); | 1169 .RetiresOnSaturation(); |
1181 EXPECT_CALL(*gl, CompileShader(shader->service_id())) | 1170 EXPECT_CALL(*gl, CompileShader(shader->service_id())) |
1182 .Times(1) | 1171 .Times(1) |
1183 .RetiresOnSaturation(); | 1172 .RetiresOnSaturation(); |
1184 EXPECT_CALL(*gl, GetShaderiv(shader->service_id(), | 1173 EXPECT_CALL(*gl, GetShaderiv(shader->service_id(), GL_COMPILE_STATUS, |
1185 GL_COMPILE_STATUS, | |
1186 NotNull())) // status | 1174 NotNull())) // status |
1187 .WillOnce(SetArgumentPointee<2>(GL_TRUE)) | 1175 .WillOnce(SetArgPointee<2>(GL_TRUE)) |
1188 .RetiresOnSaturation(); | 1176 .RetiresOnSaturation(); |
1189 } | 1177 } |
1190 shader->RequestCompile(translator, Shader::kGL); | 1178 shader->RequestCompile(translator, Shader::kGL); |
1191 shader->DoCompile(); | 1179 shader->DoCompile(); |
1192 } | 1180 } |
1193 | 1181 |
1194 // static | 1182 // static |
1195 void TestHelper::SetShaderStates(::gl::MockGLInterface* gl, | 1183 void TestHelper::SetShaderStates(::gl::MockGLInterface* gl, |
1196 Shader* shader, | 1184 Shader* shader, |
1197 bool valid) { | 1185 bool valid) { |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1229 GLenum precision, | 1217 GLenum precision, |
1230 bool static_use, | 1218 bool static_use, |
1231 const std::string& name) { | 1219 const std::string& name) { |
1232 return ConstructShaderVariable<sh::OutputVariable>( | 1220 return ConstructShaderVariable<sh::OutputVariable>( |
1233 type, array_size, precision, static_use, name); | 1221 type, array_size, precision, static_use, name); |
1234 } | 1222 } |
1235 | 1223 |
1236 } // namespace gles2 | 1224 } // namespace gles2 |
1237 } // namespace gpu | 1225 } // namespace gpu |
1238 | 1226 |
OLD | NEW |