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

Side by Side Diff: cc/output/gl_renderer_unittest.cc

Issue 951673002: Revert "Pull chromium at 2c3ffb2355a27c32f45e508ef861416b820c823b" (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/program_binding.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "cc/output/gl_renderer.h" 5 #include "cc/output/gl_renderer.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "cc/base/math_util.h" 9 #include "cc/base/math_util.h"
10 #include "cc/output/compositor_frame_metadata.h" 10 #include "cc/output/compositor_frame_metadata.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 }; 50 };
51 51
52 #define EXPECT_PROGRAM_VALID(program_binding) \ 52 #define EXPECT_PROGRAM_VALID(program_binding) \
53 do { \ 53 do { \
54 EXPECT_TRUE((program_binding)->program()); \ 54 EXPECT_TRUE((program_binding)->program()); \
55 EXPECT_TRUE((program_binding)->initialized()); \ 55 EXPECT_TRUE((program_binding)->initialized()); \
56 } while (false) 56 } while (false)
57 57
58 static inline SkXfermode::Mode BlendModeToSkXfermode(BlendMode blend_mode) { 58 static inline SkXfermode::Mode BlendModeToSkXfermode(BlendMode blend_mode) {
59 switch (blend_mode) { 59 switch (blend_mode) {
60 case BLEND_MODE_NONE: 60 case BlendModeNone:
61 case BLEND_MODE_NORMAL: 61 case BlendModeNormal:
62 return SkXfermode::kSrcOver_Mode; 62 return SkXfermode::kSrcOver_Mode;
63 case BLEND_MODE_SCREEN: 63 case BlendModeScreen:
64 return SkXfermode::kScreen_Mode; 64 return SkXfermode::kScreen_Mode;
65 case BLEND_MODE_OVERLAY: 65 case BlendModeOverlay:
66 return SkXfermode::kOverlay_Mode; 66 return SkXfermode::kOverlay_Mode;
67 case BLEND_MODE_DARKEN: 67 case BlendModeDarken:
68 return SkXfermode::kDarken_Mode; 68 return SkXfermode::kDarken_Mode;
69 case BLEND_MODE_LIGHTEN: 69 case BlendModeLighten:
70 return SkXfermode::kLighten_Mode; 70 return SkXfermode::kLighten_Mode;
71 case BLEND_MODE_COLOR_DODGE: 71 case BlendModeColorDodge:
72 return SkXfermode::kColorDodge_Mode; 72 return SkXfermode::kColorDodge_Mode;
73 case BLEND_MODE_COLOR_BURN: 73 case BlendModeColorBurn:
74 return SkXfermode::kColorBurn_Mode; 74 return SkXfermode::kColorBurn_Mode;
75 case BLEND_MODE_HARD_LIGHT: 75 case BlendModeHardLight:
76 return SkXfermode::kHardLight_Mode; 76 return SkXfermode::kHardLight_Mode;
77 case BLEND_MODE_SOFT_LIGHT: 77 case BlendModeSoftLight:
78 return SkXfermode::kSoftLight_Mode; 78 return SkXfermode::kSoftLight_Mode;
79 case BLEND_MODE_DIFFERENCE: 79 case BlendModeDifference:
80 return SkXfermode::kDifference_Mode; 80 return SkXfermode::kDifference_Mode;
81 case BLEND_MODE_EXCLUSION: 81 case BlendModeExclusion:
82 return SkXfermode::kExclusion_Mode; 82 return SkXfermode::kExclusion_Mode;
83 case BLEND_MODE_MULTIPLY: 83 case BlendModeMultiply:
84 return SkXfermode::kMultiply_Mode; 84 return SkXfermode::kMultiply_Mode;
85 case BLEND_MODE_HUE: 85 case BlendModeHue:
86 return SkXfermode::kHue_Mode; 86 return SkXfermode::kHue_Mode;
87 case BLEND_MODE_SATURATION: 87 case BlendModeSaturation:
88 return SkXfermode::kSaturation_Mode; 88 return SkXfermode::kSaturation_Mode;
89 case BLEND_MODE_COLOR: 89 case BlendModeColor:
90 return SkXfermode::kColor_Mode; 90 return SkXfermode::kColor_Mode;
91 case BLEND_MODE_LUMINOSITY: 91 case BlendModeLuminosity:
92 return SkXfermode::kLuminosity_Mode; 92 return SkXfermode::kLuminosity_Mode;
93 case NumBlendModes:
94 NOTREACHED();
93 } 95 }
94 return SkXfermode::kSrcOver_Mode; 96 return SkXfermode::kSrcOver_Mode;
95 } 97 }
96 98
97 // Explicitly named to be a friend in GLRenderer for shader access. 99 // Explicitly named to be a friend in GLRenderer for shader access.
98 class GLRendererShaderPixelTest : public GLRendererPixelTest { 100 class GLRendererShaderPixelTest : public GLRendererPixelTest {
99 public: 101 public:
100 void TestShaders() { 102 void TestShaders() {
101 ASSERT_FALSE(renderer()->IsContextLost()); 103 ASSERT_FALSE(renderer()->IsContextLost());
102 EXPECT_PROGRAM_VALID(renderer()->GetTileCheckerboardProgram()); 104 EXPECT_PROGRAM_VALID(renderer()->GetTileCheckerboardProgram());
103 EXPECT_PROGRAM_VALID(renderer()->GetDebugBorderProgram()); 105 EXPECT_PROGRAM_VALID(renderer()->GetDebugBorderProgram());
104 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgram()); 106 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgram());
105 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgramAA()); 107 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgramAA());
106 TestShadersWithTexCoordPrecision(TEX_COORD_PRECISION_MEDIUM); 108 TestShadersWithTexCoordPrecision(TexCoordPrecisionMedium);
107 TestShadersWithTexCoordPrecision(TEX_COORD_PRECISION_HIGH); 109 TestShadersWithTexCoordPrecision(TexCoordPrecisionHigh);
108 ASSERT_FALSE(renderer()->IsContextLost()); 110 ASSERT_FALSE(renderer()->IsContextLost());
109 } 111 }
110 112
111 void TestShadersWithTexCoordPrecision(TexCoordPrecision precision) { 113 void TestShadersWithTexCoordPrecision(TexCoordPrecision precision) {
112 for (int i = 0; i <= LAST_BLEND_MODE; ++i) { 114 for (int i = 0; i < NumBlendModes; ++i) {
113 BlendMode blend_mode = static_cast<BlendMode>(i); 115 BlendMode blend_mode = static_cast<BlendMode>(i);
114 EXPECT_PROGRAM_VALID( 116 EXPECT_PROGRAM_VALID(
115 renderer()->GetRenderPassProgram(precision, blend_mode)); 117 renderer()->GetRenderPassProgram(precision, blend_mode));
116 EXPECT_PROGRAM_VALID( 118 EXPECT_PROGRAM_VALID(
117 renderer()->GetRenderPassProgramAA(precision, blend_mode)); 119 renderer()->GetRenderPassProgramAA(precision, blend_mode));
118 } 120 }
119 EXPECT_PROGRAM_VALID(renderer()->GetTextureProgram(precision)); 121 EXPECT_PROGRAM_VALID(renderer()->GetTextureProgram(precision));
120 EXPECT_PROGRAM_VALID( 122 EXPECT_PROGRAM_VALID(
121 renderer()->GetNonPremultipliedTextureProgram(precision)); 123 renderer()->GetNonPremultipliedTextureProgram(precision));
122 EXPECT_PROGRAM_VALID(renderer()->GetTextureBackgroundProgram(precision)); 124 EXPECT_PROGRAM_VALID(renderer()->GetTextureBackgroundProgram(precision));
123 EXPECT_PROGRAM_VALID( 125 EXPECT_PROGRAM_VALID(
124 renderer()->GetNonPremultipliedTextureBackgroundProgram(precision)); 126 renderer()->GetNonPremultipliedTextureBackgroundProgram(precision));
125 EXPECT_PROGRAM_VALID(renderer()->GetTextureIOSurfaceProgram(precision)); 127 EXPECT_PROGRAM_VALID(renderer()->GetTextureIOSurfaceProgram(precision));
126 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVProgram(precision)); 128 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVProgram(precision));
127 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVAProgram(precision)); 129 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVAProgram(precision));
128 // This is unlikely to be ever true in tests due to usage of osmesa. 130 // This is unlikely to be ever true in tests due to usage of osmesa.
129 if (renderer()->Capabilities().using_egl_image) 131 if (renderer()->Capabilities().using_egl_image)
130 EXPECT_PROGRAM_VALID(renderer()->GetVideoStreamTextureProgram(precision)); 132 EXPECT_PROGRAM_VALID(renderer()->GetVideoStreamTextureProgram(precision));
131 else 133 else
132 EXPECT_FALSE(renderer()->GetVideoStreamTextureProgram(precision)); 134 EXPECT_FALSE(renderer()->GetVideoStreamTextureProgram(precision));
133 TestShadersWithSamplerType(precision, SAMPLER_TYPE_2D); 135 TestShadersWithSamplerType(precision, SamplerType2D);
134 TestShadersWithSamplerType(precision, SAMPLER_TYPE_2D_RECT); 136 TestShadersWithSamplerType(precision, SamplerType2DRect);
135 // This is unlikely to be ever true in tests due to usage of osmesa. 137 // This is unlikely to be ever true in tests due to usage of osmesa.
136 if (renderer()->Capabilities().using_egl_image) 138 if (renderer()->Capabilities().using_egl_image)
137 TestShadersWithSamplerType(precision, SAMPLER_TYPE_EXTERNAL_OES); 139 TestShadersWithSamplerType(precision, SamplerTypeExternalOES);
138 } 140 }
139 141
140 void TestShadersWithSamplerType(TexCoordPrecision precision, 142 void TestShadersWithSamplerType(TexCoordPrecision precision,
141 SamplerType sampler) { 143 SamplerType sampler) {
142 EXPECT_PROGRAM_VALID(renderer()->GetTileProgram(precision, sampler)); 144 EXPECT_PROGRAM_VALID(renderer()->GetTileProgram(precision, sampler));
143 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramOpaque(precision, sampler)); 145 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramOpaque(precision, sampler));
144 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramAA(precision, sampler)); 146 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramAA(precision, sampler));
145 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramSwizzle(precision, sampler)); 147 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramSwizzle(precision, sampler));
146 EXPECT_PROGRAM_VALID( 148 EXPECT_PROGRAM_VALID(
147 renderer()->GetTileProgramSwizzleOpaque(precision, sampler)); 149 renderer()->GetTileProgramSwizzleOpaque(precision, sampler));
148 EXPECT_PROGRAM_VALID( 150 EXPECT_PROGRAM_VALID(
149 renderer()->GetTileProgramSwizzleAA(precision, sampler)); 151 renderer()->GetTileProgramSwizzleAA(precision, sampler));
150 for (int i = 0; i <= LAST_BLEND_MODE; ++i) { 152 for (int i = 0; i < NumBlendModes; ++i) {
151 BlendMode blend_mode = static_cast<BlendMode>(i); 153 BlendMode blend_mode = static_cast<BlendMode>(i);
152 EXPECT_PROGRAM_VALID( 154 EXPECT_PROGRAM_VALID(
153 renderer()->GetRenderPassMaskProgram(precision, sampler, blend_mode)); 155 renderer()->GetRenderPassMaskProgram(precision, sampler, blend_mode));
154 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskProgramAA( 156 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskProgramAA(
155 precision, sampler, blend_mode)); 157 precision, sampler, blend_mode));
156 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskColorMatrixProgramAA( 158 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskColorMatrixProgramAA(
157 precision, sampler, blend_mode)); 159 precision, sampler, blend_mode));
158 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskColorMatrixProgram( 160 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskColorMatrixProgram(
159 precision, sampler, blend_mode)); 161 precision, sampler, blend_mode));
160 } 162 }
(...skipping 1267 matching lines...) Expand 10 before | Expand all | Expand 10 after
1428 gfx::Rect viewport_rect(1, 1); 1430 gfx::Rect viewport_rect(1, 1);
1429 1431
1430 gfx::Rect child_rect(50, 50); 1432 gfx::Rect child_rect(50, 50);
1431 RenderPassId child_pass_id(2, 0); 1433 RenderPassId child_pass_id(2, 0);
1432 TestRenderPass* child_pass; 1434 TestRenderPass* child_pass;
1433 1435
1434 RenderPassId root_pass_id(1, 0); 1436 RenderPassId root_pass_id(1, 0);
1435 TestRenderPass* root_pass; 1437 TestRenderPass* root_pass;
1436 1438
1437 ResourceProvider::ResourceId mask = resource_provider_->CreateResource( 1439 ResourceProvider::ResourceId mask = resource_provider_->CreateResource(
1438 gfx::Size(20, 12), GL_CLAMP_TO_EDGE, 1440 gfx::Size(20, 12),
1439 ResourceProvider::TEXTURE_HINT_IMMUTABLE, 1441 GL_CLAMP_TO_EDGE,
1442 ResourceProvider::TextureHintImmutable,
1440 resource_provider_->best_texture_format()); 1443 resource_provider_->best_texture_format());
1441 resource_provider_->AllocateForTesting(mask); 1444 resource_provider_->AllocateForTesting(mask);
1442 1445
1443 SkScalar matrix[20]; 1446 SkScalar matrix[20];
1444 float amount = 0.5f; 1447 float amount = 0.5f;
1445 matrix[0] = 0.213f + 0.787f * amount; 1448 matrix[0] = 0.213f + 0.787f * amount;
1446 matrix[1] = 0.715f - 0.715f * amount; 1449 matrix[1] = 0.715f - 0.715f * amount;
1447 matrix[2] = 1.f - (matrix[0] + matrix[1]); 1450 matrix[2] = 1.f - (matrix[0] + matrix[1]);
1448 matrix[3] = matrix[4] = 0; 1451 matrix[3] = matrix[4] = 0;
1449 matrix[5] = 0.213f - 0.213f * amount; 1452 matrix[5] = 0.213f - 0.213f * amount;
1450 matrix[6] = 0.715f + 0.285f * amount; 1453 matrix[6] = 0.715f + 0.285f * amount;
1451 matrix[7] = 1.f - (matrix[5] + matrix[6]); 1454 matrix[7] = 1.f - (matrix[5] + matrix[6]);
1452 matrix[8] = matrix[9] = 0; 1455 matrix[8] = matrix[9] = 0;
1453 matrix[10] = 0.213f - 0.213f * amount; 1456 matrix[10] = 0.213f - 0.213f * amount;
1454 matrix[11] = 0.715f - 0.715f * amount; 1457 matrix[11] = 0.715f - 0.715f * amount;
1455 matrix[12] = 1.f - (matrix[10] + matrix[11]); 1458 matrix[12] = 1.f - (matrix[10] + matrix[11]);
1456 matrix[13] = matrix[14] = 0; 1459 matrix[13] = matrix[14] = 0;
1457 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0; 1460 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0;
1458 matrix[18] = 1; 1461 matrix[18] = 1;
1459 skia::RefPtr<SkColorFilter> color_filter( 1462 skia::RefPtr<SkColorFilter> color_filter(
1460 skia::AdoptRef(SkColorMatrixFilter::Create(matrix))); 1463 skia::AdoptRef(SkColorMatrixFilter::Create(matrix)));
1461 skia::RefPtr<SkImageFilter> filter = skia::AdoptRef( 1464 skia::RefPtr<SkImageFilter> filter = skia::AdoptRef(
1462 SkColorFilterImageFilter::Create(color_filter.get(), NULL)); 1465 SkColorFilterImageFilter::Create(color_filter.get(), NULL));
1463 FilterOperations filters; 1466 FilterOperations filters;
1464 filters.Append(FilterOperation::CreateReferenceFilter(filter)); 1467 filters.Append(FilterOperation::CreateReferenceFilter(filter));
1465 1468
1466 gfx::Transform transform_causing_aa; 1469 gfx::Transform transform_causing_aa;
1467 transform_causing_aa.Rotate(20.0); 1470 transform_causing_aa.Rotate(20.0);
1468 1471
1469 for (int i = 0; i <= LAST_BLEND_MODE; ++i) { 1472 for (int i = 0; i < NumBlendModes; ++i) {
1470 BlendMode blend_mode = static_cast<BlendMode>(i); 1473 BlendMode blend_mode = static_cast<BlendMode>(i);
1471 SkXfermode::Mode xfer_mode = BlendModeToSkXfermode(blend_mode); 1474 SkXfermode::Mode xfer_mode = BlendModeToSkXfermode(blend_mode);
1472 settings_.force_blending_with_shaders = (blend_mode != BLEND_MODE_NONE); 1475 settings_.force_blending_with_shaders = (blend_mode != BlendModeNone);
1473 // RenderPassProgram 1476 // RenderPassProgram
1474 render_passes_in_draw_order_.clear(); 1477 render_passes_in_draw_order_.clear();
1475 child_pass = AddRenderPass(&render_passes_in_draw_order_, 1478 child_pass = AddRenderPass(&render_passes_in_draw_order_,
1476 child_pass_id, 1479 child_pass_id,
1477 child_rect, 1480 child_rect,
1478 gfx::Transform()); 1481 gfx::Transform());
1479 1482
1480 root_pass = AddRenderPass(&render_passes_in_draw_order_, 1483 root_pass = AddRenderPass(&render_passes_in_draw_order_,
1481 root_pass_id, 1484 root_pass_id,
1482 viewport_rect, 1485 viewport_rect,
1483 gfx::Transform()); 1486 gfx::Transform());
1484 1487
1485 AddRenderPassQuad(root_pass, 1488 AddRenderPassQuad(root_pass,
1486 child_pass, 1489 child_pass,
1487 0, 1490 0,
1488 FilterOperations(), 1491 FilterOperations(),
1489 gfx::Transform(), 1492 gfx::Transform(),
1490 xfer_mode); 1493 xfer_mode);
1491 1494
1492 renderer_->DecideRenderPassAllocationsForFrame( 1495 renderer_->DecideRenderPassAllocationsForFrame(
1493 render_passes_in_draw_order_); 1496 render_passes_in_draw_order_);
1494 renderer_->DrawFrame(&render_passes_in_draw_order_, 1497 renderer_->DrawFrame(&render_passes_in_draw_order_,
1495 1.f, 1498 1.f,
1496 viewport_rect, 1499 viewport_rect,
1497 viewport_rect, 1500 viewport_rect,
1498 false); 1501 false);
1499 TestRenderPassProgram(TEX_COORD_PRECISION_MEDIUM, blend_mode); 1502 TestRenderPassProgram(TexCoordPrecisionMedium, blend_mode);
1500 1503
1501 // RenderPassColorMatrixProgram 1504 // RenderPassColorMatrixProgram
1502 render_passes_in_draw_order_.clear(); 1505 render_passes_in_draw_order_.clear();
1503 1506
1504 child_pass = AddRenderPass(&render_passes_in_draw_order_, 1507 child_pass = AddRenderPass(&render_passes_in_draw_order_,
1505 child_pass_id, 1508 child_pass_id,
1506 child_rect, 1509 child_rect,
1507 transform_causing_aa); 1510 transform_causing_aa);
1508 1511
1509 root_pass = AddRenderPass(&render_passes_in_draw_order_, 1512 root_pass = AddRenderPass(&render_passes_in_draw_order_,
1510 root_pass_id, 1513 root_pass_id,
1511 viewport_rect, 1514 viewport_rect,
1512 gfx::Transform()); 1515 gfx::Transform());
1513 1516
1514 AddRenderPassQuad( 1517 AddRenderPassQuad(
1515 root_pass, child_pass, 0, filters, gfx::Transform(), xfer_mode); 1518 root_pass, child_pass, 0, filters, gfx::Transform(), xfer_mode);
1516 1519
1517 renderer_->DecideRenderPassAllocationsForFrame( 1520 renderer_->DecideRenderPassAllocationsForFrame(
1518 render_passes_in_draw_order_); 1521 render_passes_in_draw_order_);
1519 renderer_->DrawFrame(&render_passes_in_draw_order_, 1522 renderer_->DrawFrame(&render_passes_in_draw_order_,
1520 1.f, 1523 1.f,
1521 viewport_rect, 1524 viewport_rect,
1522 viewport_rect, 1525 viewport_rect,
1523 false); 1526 false);
1524 TestRenderPassColorMatrixProgram(TEX_COORD_PRECISION_MEDIUM, blend_mode); 1527 TestRenderPassColorMatrixProgram(TexCoordPrecisionMedium, blend_mode);
1525 1528
1526 // RenderPassMaskProgram 1529 // RenderPassMaskProgram
1527 render_passes_in_draw_order_.clear(); 1530 render_passes_in_draw_order_.clear();
1528 1531
1529 child_pass = AddRenderPass(&render_passes_in_draw_order_, 1532 child_pass = AddRenderPass(&render_passes_in_draw_order_,
1530 child_pass_id, 1533 child_pass_id,
1531 child_rect, 1534 child_rect,
1532 gfx::Transform()); 1535 gfx::Transform());
1533 1536
1534 root_pass = AddRenderPass(&render_passes_in_draw_order_, 1537 root_pass = AddRenderPass(&render_passes_in_draw_order_,
1535 root_pass_id, 1538 root_pass_id,
1536 viewport_rect, 1539 viewport_rect,
1537 gfx::Transform()); 1540 gfx::Transform());
1538 1541
1539 AddRenderPassQuad(root_pass, 1542 AddRenderPassQuad(root_pass,
1540 child_pass, 1543 child_pass,
1541 mask, 1544 mask,
1542 FilterOperations(), 1545 FilterOperations(),
1543 gfx::Transform(), 1546 gfx::Transform(),
1544 xfer_mode); 1547 xfer_mode);
1545 1548
1546 renderer_->DecideRenderPassAllocationsForFrame( 1549 renderer_->DecideRenderPassAllocationsForFrame(
1547 render_passes_in_draw_order_); 1550 render_passes_in_draw_order_);
1548 renderer_->DrawFrame(&render_passes_in_draw_order_, 1551 renderer_->DrawFrame(&render_passes_in_draw_order_,
1549 1.f, 1552 1.f,
1550 viewport_rect, 1553 viewport_rect,
1551 viewport_rect, 1554 viewport_rect,
1552 false); 1555 false);
1553 TestRenderPassMaskProgram(TEX_COORD_PRECISION_MEDIUM, SAMPLER_TYPE_2D, 1556 TestRenderPassMaskProgram(
1554 blend_mode); 1557 TexCoordPrecisionMedium, SamplerType2D, blend_mode);
1555 1558
1556 // RenderPassMaskColorMatrixProgram 1559 // RenderPassMaskColorMatrixProgram
1557 render_passes_in_draw_order_.clear(); 1560 render_passes_in_draw_order_.clear();
1558 1561
1559 child_pass = AddRenderPass(&render_passes_in_draw_order_, 1562 child_pass = AddRenderPass(&render_passes_in_draw_order_,
1560 child_pass_id, 1563 child_pass_id,
1561 child_rect, 1564 child_rect,
1562 gfx::Transform()); 1565 gfx::Transform());
1563 1566
1564 root_pass = AddRenderPass(&render_passes_in_draw_order_, 1567 root_pass = AddRenderPass(&render_passes_in_draw_order_,
1565 root_pass_id, 1568 root_pass_id,
1566 viewport_rect, 1569 viewport_rect,
1567 gfx::Transform()); 1570 gfx::Transform());
1568 1571
1569 AddRenderPassQuad( 1572 AddRenderPassQuad(
1570 root_pass, child_pass, mask, filters, gfx::Transform(), xfer_mode); 1573 root_pass, child_pass, mask, filters, gfx::Transform(), xfer_mode);
1571 1574
1572 renderer_->DecideRenderPassAllocationsForFrame( 1575 renderer_->DecideRenderPassAllocationsForFrame(
1573 render_passes_in_draw_order_); 1576 render_passes_in_draw_order_);
1574 renderer_->DrawFrame(&render_passes_in_draw_order_, 1577 renderer_->DrawFrame(&render_passes_in_draw_order_,
1575 1.f, 1578 1.f,
1576 viewport_rect, 1579 viewport_rect,
1577 viewport_rect, 1580 viewport_rect,
1578 false); 1581 false);
1579 TestRenderPassMaskColorMatrixProgram(TEX_COORD_PRECISION_MEDIUM, 1582 TestRenderPassMaskColorMatrixProgram(
1580 SAMPLER_TYPE_2D, blend_mode); 1583 TexCoordPrecisionMedium, SamplerType2D, blend_mode);
1581 1584
1582 // RenderPassProgramAA 1585 // RenderPassProgramAA
1583 render_passes_in_draw_order_.clear(); 1586 render_passes_in_draw_order_.clear();
1584 1587
1585 child_pass = AddRenderPass(&render_passes_in_draw_order_, 1588 child_pass = AddRenderPass(&render_passes_in_draw_order_,
1586 child_pass_id, 1589 child_pass_id,
1587 child_rect, 1590 child_rect,
1588 transform_causing_aa); 1591 transform_causing_aa);
1589 1592
1590 root_pass = AddRenderPass(&render_passes_in_draw_order_, 1593 root_pass = AddRenderPass(&render_passes_in_draw_order_,
1591 root_pass_id, 1594 root_pass_id,
1592 viewport_rect, 1595 viewport_rect,
1593 gfx::Transform()); 1596 gfx::Transform());
1594 1597
1595 AddRenderPassQuad(root_pass, 1598 AddRenderPassQuad(root_pass,
1596 child_pass, 1599 child_pass,
1597 0, 1600 0,
1598 FilterOperations(), 1601 FilterOperations(),
1599 transform_causing_aa, 1602 transform_causing_aa,
1600 xfer_mode); 1603 xfer_mode);
1601 1604
1602 renderer_->DecideRenderPassAllocationsForFrame( 1605 renderer_->DecideRenderPassAllocationsForFrame(
1603 render_passes_in_draw_order_); 1606 render_passes_in_draw_order_);
1604 renderer_->DrawFrame(&render_passes_in_draw_order_, 1607 renderer_->DrawFrame(&render_passes_in_draw_order_,
1605 1.f, 1608 1.f,
1606 viewport_rect, 1609 viewport_rect,
1607 viewport_rect, 1610 viewport_rect,
1608 false); 1611 false);
1609 TestRenderPassProgramAA(TEX_COORD_PRECISION_MEDIUM, blend_mode); 1612 TestRenderPassProgramAA(TexCoordPrecisionMedium, blend_mode);
1610 1613
1611 // RenderPassColorMatrixProgramAA 1614 // RenderPassColorMatrixProgramAA
1612 render_passes_in_draw_order_.clear(); 1615 render_passes_in_draw_order_.clear();
1613 1616
1614 child_pass = AddRenderPass(&render_passes_in_draw_order_, 1617 child_pass = AddRenderPass(&render_passes_in_draw_order_,
1615 child_pass_id, 1618 child_pass_id,
1616 child_rect, 1619 child_rect,
1617 transform_causing_aa); 1620 transform_causing_aa);
1618 1621
1619 root_pass = AddRenderPass(&render_passes_in_draw_order_, 1622 root_pass = AddRenderPass(&render_passes_in_draw_order_,
1620 root_pass_id, 1623 root_pass_id,
1621 viewport_rect, 1624 viewport_rect,
1622 gfx::Transform()); 1625 gfx::Transform());
1623 1626
1624 AddRenderPassQuad( 1627 AddRenderPassQuad(
1625 root_pass, child_pass, 0, filters, transform_causing_aa, xfer_mode); 1628 root_pass, child_pass, 0, filters, transform_causing_aa, xfer_mode);
1626 1629
1627 renderer_->DecideRenderPassAllocationsForFrame( 1630 renderer_->DecideRenderPassAllocationsForFrame(
1628 render_passes_in_draw_order_); 1631 render_passes_in_draw_order_);
1629 renderer_->DrawFrame(&render_passes_in_draw_order_, 1632 renderer_->DrawFrame(&render_passes_in_draw_order_,
1630 1.f, 1633 1.f,
1631 viewport_rect, 1634 viewport_rect,
1632 viewport_rect, 1635 viewport_rect,
1633 false); 1636 false);
1634 TestRenderPassColorMatrixProgramAA(TEX_COORD_PRECISION_MEDIUM, blend_mode); 1637 TestRenderPassColorMatrixProgramAA(TexCoordPrecisionMedium, blend_mode);
1635 1638
1636 // RenderPassMaskProgramAA 1639 // RenderPassMaskProgramAA
1637 render_passes_in_draw_order_.clear(); 1640 render_passes_in_draw_order_.clear();
1638 1641
1639 child_pass = AddRenderPass(&render_passes_in_draw_order_, 1642 child_pass = AddRenderPass(&render_passes_in_draw_order_,
1640 child_pass_id, 1643 child_pass_id,
1641 child_rect, 1644 child_rect,
1642 transform_causing_aa); 1645 transform_causing_aa);
1643 1646
1644 root_pass = AddRenderPass(&render_passes_in_draw_order_, 1647 root_pass = AddRenderPass(&render_passes_in_draw_order_,
1645 root_pass_id, 1648 root_pass_id,
1646 viewport_rect, 1649 viewport_rect,
1647 gfx::Transform()); 1650 gfx::Transform());
1648 1651
1649 AddRenderPassQuad(root_pass, 1652 AddRenderPassQuad(root_pass,
1650 child_pass, 1653 child_pass,
1651 mask, 1654 mask,
1652 FilterOperations(), 1655 FilterOperations(),
1653 transform_causing_aa, 1656 transform_causing_aa,
1654 xfer_mode); 1657 xfer_mode);
1655 1658
1656 renderer_->DecideRenderPassAllocationsForFrame( 1659 renderer_->DecideRenderPassAllocationsForFrame(
1657 render_passes_in_draw_order_); 1660 render_passes_in_draw_order_);
1658 renderer_->DrawFrame(&render_passes_in_draw_order_, 1661 renderer_->DrawFrame(&render_passes_in_draw_order_,
1659 1.f, 1662 1.f,
1660 viewport_rect, 1663 viewport_rect,
1661 viewport_rect, 1664 viewport_rect,
1662 false); 1665 false);
1663 TestRenderPassMaskProgramAA(TEX_COORD_PRECISION_MEDIUM, SAMPLER_TYPE_2D, 1666 TestRenderPassMaskProgramAA(
1664 blend_mode); 1667 TexCoordPrecisionMedium, SamplerType2D, blend_mode);
1665 1668
1666 // RenderPassMaskColorMatrixProgramAA 1669 // RenderPassMaskColorMatrixProgramAA
1667 render_passes_in_draw_order_.clear(); 1670 render_passes_in_draw_order_.clear();
1668 1671
1669 child_pass = AddRenderPass(&render_passes_in_draw_order_, 1672 child_pass = AddRenderPass(&render_passes_in_draw_order_,
1670 child_pass_id, 1673 child_pass_id,
1671 child_rect, 1674 child_rect,
1672 transform_causing_aa); 1675 transform_causing_aa);
1673 1676
1674 root_pass = AddRenderPass(&render_passes_in_draw_order_, 1677 root_pass = AddRenderPass(&render_passes_in_draw_order_,
1675 root_pass_id, 1678 root_pass_id,
1676 viewport_rect, 1679 viewport_rect,
1677 transform_causing_aa); 1680 transform_causing_aa);
1678 1681
1679 AddRenderPassQuad( 1682 AddRenderPassQuad(
1680 root_pass, child_pass, mask, filters, transform_causing_aa, xfer_mode); 1683 root_pass, child_pass, mask, filters, transform_causing_aa, xfer_mode);
1681 1684
1682 renderer_->DecideRenderPassAllocationsForFrame( 1685 renderer_->DecideRenderPassAllocationsForFrame(
1683 render_passes_in_draw_order_); 1686 render_passes_in_draw_order_);
1684 renderer_->DrawFrame(&render_passes_in_draw_order_, 1687 renderer_->DrawFrame(&render_passes_in_draw_order_,
1685 1.f, 1688 1.f,
1686 viewport_rect, 1689 viewport_rect,
1687 viewport_rect, 1690 viewport_rect,
1688 false); 1691 false);
1689 TestRenderPassMaskColorMatrixProgramAA(TEX_COORD_PRECISION_MEDIUM, 1692 TestRenderPassMaskColorMatrixProgramAA(
1690 SAMPLER_TYPE_2D, blend_mode); 1693 TexCoordPrecisionMedium, SamplerType2D, blend_mode);
1691 } 1694 }
1692 } 1695 }
1693 1696
1694 // At this time, the AA code path cannot be taken if the surface's rect would 1697 // At this time, the AA code path cannot be taken if the surface's rect would
1695 // project incorrectly by the given transform, because of w<0 clipping. 1698 // project incorrectly by the given transform, because of w<0 clipping.
1696 TEST_F(GLRendererShaderTest, DrawRenderPassQuadSkipsAAForClippingTransform) { 1699 TEST_F(GLRendererShaderTest, DrawRenderPassQuadSkipsAAForClippingTransform) {
1697 gfx::Rect child_rect(50, 50); 1700 gfx::Rect child_rect(50, 50);
1698 RenderPassId child_pass_id(2, 0); 1701 RenderPassId child_pass_id(2, 0);
1699 TestRenderPass* child_pass; 1702 TestRenderPass* child_pass;
1700 1703
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1732 1735
1733 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); 1736 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_);
1734 renderer_->DrawFrame(&render_passes_in_draw_order_, 1737 renderer_->DrawFrame(&render_passes_in_draw_order_,
1735 1.f, 1738 1.f,
1736 viewport_rect, 1739 viewport_rect,
1737 viewport_rect, 1740 viewport_rect,
1738 false); 1741 false);
1739 1742
1740 // If use_aa incorrectly ignores clipping, it will use the 1743 // If use_aa incorrectly ignores clipping, it will use the
1741 // RenderPassProgramAA shader instead of the RenderPassProgram. 1744 // RenderPassProgramAA shader instead of the RenderPassProgram.
1742 TestRenderPassProgram(TEX_COORD_PRECISION_MEDIUM, BLEND_MODE_NONE); 1745 TestRenderPassProgram(TexCoordPrecisionMedium, BlendModeNone);
1743 } 1746 }
1744 1747
1745 TEST_F(GLRendererShaderTest, DrawSolidColorShader) { 1748 TEST_F(GLRendererShaderTest, DrawSolidColorShader) {
1746 gfx::Rect viewport_rect(1, 1); 1749 gfx::Rect viewport_rect(1, 1);
1747 RenderPassId root_pass_id(1, 0); 1750 RenderPassId root_pass_id(1, 0);
1748 TestRenderPass* root_pass; 1751 TestRenderPass* root_pass;
1749 1752
1750 gfx::Transform pixel_aligned_transform_causing_aa; 1753 gfx::Transform pixel_aligned_transform_causing_aa;
1751 pixel_aligned_transform_causing_aa.Translate(25.5f, 25.5f); 1754 pixel_aligned_transform_causing_aa.Translate(25.5f, 25.5f);
1752 pixel_aligned_transform_causing_aa.Scale(0.5f, 0.5f); 1755 pixel_aligned_transform_causing_aa.Scale(0.5f, 0.5f);
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
1970 base::MessageLoop::current()->Run(); 1973 base::MessageLoop::current()->Run();
1971 1974
1972 // The sync point should have happened. 1975 // The sync point should have happened.
1973 EXPECT_EQ(1, sync_point_callback_count); 1976 EXPECT_EQ(1, sync_point_callback_count);
1974 EXPECT_EQ(1, other_callback_count); 1977 EXPECT_EQ(1, other_callback_count);
1975 } 1978 }
1976 #endif // OS_ANDROID 1979 #endif // OS_ANDROID
1977 1980
1978 } // namespace 1981 } // namespace
1979 } // namespace cc 1982 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/program_binding.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698