OLD | NEW |
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 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 EXPECT_PROGRAM_VALID(renderer()->GetTileCheckerboardProgram()); | 69 EXPECT_PROGRAM_VALID(renderer()->GetTileCheckerboardProgram()); |
70 EXPECT_PROGRAM_VALID(renderer()->GetDebugBorderProgram()); | 70 EXPECT_PROGRAM_VALID(renderer()->GetDebugBorderProgram()); |
71 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgram()); | 71 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgram()); |
72 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgramAA()); | 72 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgramAA()); |
73 TestShadersWithTexCoordPrecision(TexCoordPrecisionMedium); | 73 TestShadersWithTexCoordPrecision(TexCoordPrecisionMedium); |
74 TestShadersWithTexCoordPrecision(TexCoordPrecisionHigh); | 74 TestShadersWithTexCoordPrecision(TexCoordPrecisionHigh); |
75 ASSERT_FALSE(renderer()->IsContextLost()); | 75 ASSERT_FALSE(renderer()->IsContextLost()); |
76 } | 76 } |
77 | 77 |
78 void TestShadersWithTexCoordPrecision(TexCoordPrecision precision) { | 78 void TestShadersWithTexCoordPrecision(TexCoordPrecision precision) { |
79 EXPECT_PROGRAM_VALID(renderer()->GetTileProgram(precision)); | |
80 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramOpaque(precision)); | |
81 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramAA(precision)); | |
82 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramSwizzle(precision)); | |
83 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramSwizzleOpaque(precision)); | |
84 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramSwizzleAA(precision)); | |
85 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassProgram(precision)); | 79 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassProgram(precision)); |
86 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassProgramAA(precision)); | 80 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassProgramAA(precision)); |
87 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskProgram(precision)); | 81 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskProgram(precision)); |
88 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskProgramAA(precision)); | 82 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskProgramAA(precision)); |
89 EXPECT_PROGRAM_VALID( | 83 EXPECT_PROGRAM_VALID( |
90 renderer()->GetRenderPassColorMatrixProgram(precision)); | 84 renderer()->GetRenderPassColorMatrixProgram(precision)); |
91 EXPECT_PROGRAM_VALID( | 85 EXPECT_PROGRAM_VALID( |
92 renderer()->GetRenderPassMaskColorMatrixProgramAA(precision)); | 86 renderer()->GetRenderPassMaskColorMatrixProgramAA(precision)); |
93 EXPECT_PROGRAM_VALID( | 87 EXPECT_PROGRAM_VALID( |
94 renderer()->GetRenderPassColorMatrixProgramAA(precision)); | 88 renderer()->GetRenderPassColorMatrixProgramAA(precision)); |
95 EXPECT_PROGRAM_VALID( | 89 EXPECT_PROGRAM_VALID( |
96 renderer()->GetRenderPassMaskColorMatrixProgram(precision)); | 90 renderer()->GetRenderPassMaskColorMatrixProgram(precision)); |
97 EXPECT_PROGRAM_VALID(renderer()->GetTextureProgram(precision)); | 91 EXPECT_PROGRAM_VALID(renderer()->GetTextureProgram(precision)); |
98 EXPECT_PROGRAM_VALID( | 92 EXPECT_PROGRAM_VALID( |
99 renderer()->GetNonPremultipliedTextureProgram(precision)); | 93 renderer()->GetNonPremultipliedTextureProgram(precision)); |
100 EXPECT_PROGRAM_VALID(renderer()->GetTextureBackgroundProgram(precision)); | 94 EXPECT_PROGRAM_VALID(renderer()->GetTextureBackgroundProgram(precision)); |
101 EXPECT_PROGRAM_VALID( | 95 EXPECT_PROGRAM_VALID( |
102 renderer()->GetNonPremultipliedTextureBackgroundProgram(precision)); | 96 renderer()->GetNonPremultipliedTextureBackgroundProgram(precision)); |
103 EXPECT_PROGRAM_VALID(renderer()->GetTextureIOSurfaceProgram(precision)); | 97 EXPECT_PROGRAM_VALID(renderer()->GetTextureIOSurfaceProgram(precision)); |
104 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVProgram(precision)); | 98 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVProgram(precision)); |
105 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVAProgram(precision)); | 99 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVAProgram(precision)); |
106 // This is unlikely to be ever true in tests due to usage of osmesa. | 100 // This is unlikely to be ever true in tests due to usage of osmesa. |
107 if (renderer()->Capabilities().using_egl_image) | 101 if (renderer()->Capabilities().using_egl_image) |
108 EXPECT_PROGRAM_VALID(renderer()->GetVideoStreamTextureProgram(precision)); | 102 EXPECT_PROGRAM_VALID(renderer()->GetVideoStreamTextureProgram(precision)); |
109 else | 103 else |
110 EXPECT_FALSE(renderer()->GetVideoStreamTextureProgram(precision)); | 104 EXPECT_FALSE(renderer()->GetVideoStreamTextureProgram(precision)); |
| 105 TestShadersWithSamplerType(precision, SamplerType2D); |
| 106 TestShadersWithSamplerType(precision, SamplerType2DRect); |
| 107 // This is unlikely to be ever true in tests due to usage of osmesa. |
| 108 if (renderer()->Capabilities().using_egl_image) |
| 109 TestShadersWithSamplerType(precision, SamplerTypeExternalOES); |
| 110 } |
| 111 |
| 112 void TestShadersWithSamplerType( |
| 113 TexCoordPrecision precision, SamplerType sampler) { |
| 114 EXPECT_PROGRAM_VALID(renderer()->GetTileProgram(precision, sampler)); |
| 115 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramOpaque(precision, sampler)); |
| 116 EXPECT_PROGRAM_VALID(renderer()->GetTileProgramAA(precision, sampler)); |
| 117 EXPECT_PROGRAM_VALID( |
| 118 renderer()->GetTileProgramSwizzle(precision, sampler)); |
| 119 EXPECT_PROGRAM_VALID( |
| 120 renderer()->GetTileProgramSwizzleOpaque(precision, sampler)); |
| 121 EXPECT_PROGRAM_VALID( |
| 122 renderer()->GetTileProgramSwizzleAA(precision, sampler)); |
111 } | 123 } |
112 }; | 124 }; |
113 | 125 |
114 namespace { | 126 namespace { |
115 | 127 |
116 #if !defined(OS_ANDROID) | 128 #if !defined(OS_ANDROID) |
117 TEST_F(GLRendererShaderPixelTest, AllShadersCompile) { TestShaders(); } | 129 TEST_F(GLRendererShaderPixelTest, AllShadersCompile) { TestShaders(); } |
118 #endif | 130 #endif |
119 | 131 |
120 class FrameCountingContext : public TestWebGraphicsContext3D { | 132 class FrameCountingContext : public TestWebGraphicsContext3D { |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 | 266 |
255 resource_provider_ = ResourceProvider::Create( | 267 resource_provider_ = ResourceProvider::Create( |
256 output_surface_.get(), NULL, 0, false, 1).Pass(); | 268 output_surface_.get(), NULL, 0, false, 1).Pass(); |
257 renderer_.reset(new FakeRendererGL(&renderer_client_, | 269 renderer_.reset(new FakeRendererGL(&renderer_client_, |
258 &settings_, | 270 &settings_, |
259 output_surface_.get(), | 271 output_surface_.get(), |
260 resource_provider_.get())); | 272 resource_provider_.get())); |
261 renderer_->Initialize(); | 273 renderer_->Initialize(); |
262 } | 274 } |
263 | 275 |
264 void TestRenderPassProgram() { | 276 void TestRenderPassProgram(TexCoordPrecision precision) { |
265 EXPECT_PROGRAM_VALID(&renderer_->render_pass_program_); | 277 EXPECT_PROGRAM_VALID(&renderer_->render_pass_program_[precision]); |
266 EXPECT_EQ(renderer_->render_pass_program_.program(), | 278 EXPECT_EQ(renderer_->render_pass_program_[precision].program(), |
267 renderer_->program_shadow_); | 279 renderer_->program_shadow_); |
268 } | 280 } |
269 | 281 |
270 void TestRenderPassColorMatrixProgram() { | 282 void TestRenderPassColorMatrixProgram(TexCoordPrecision precision) { |
271 EXPECT_PROGRAM_VALID(&renderer_->render_pass_color_matrix_program_); | 283 EXPECT_PROGRAM_VALID( |
272 EXPECT_EQ(renderer_->render_pass_color_matrix_program_.program(), | 284 &renderer_->render_pass_color_matrix_program_[precision]); |
| 285 EXPECT_EQ( |
| 286 renderer_->render_pass_color_matrix_program_[precision].program(), |
| 287 renderer_->program_shadow_); |
| 288 } |
| 289 |
| 290 void TestRenderPassMaskProgram(TexCoordPrecision precision) { |
| 291 EXPECT_PROGRAM_VALID(&renderer_->render_pass_mask_program_[precision]); |
| 292 EXPECT_EQ(renderer_->render_pass_mask_program_[precision].program(), |
273 renderer_->program_shadow_); | 293 renderer_->program_shadow_); |
274 } | 294 } |
275 | 295 |
276 void TestRenderPassMaskProgram() { | 296 void TestRenderPassMaskColorMatrixProgram(TexCoordPrecision precision) { |
277 EXPECT_PROGRAM_VALID(&renderer_->render_pass_mask_program_); | 297 EXPECT_PROGRAM_VALID( |
278 EXPECT_EQ(renderer_->render_pass_mask_program_.program(), | 298 &renderer_->render_pass_mask_color_matrix_program_[precision]); |
| 299 EXPECT_EQ(renderer_-> |
| 300 render_pass_mask_color_matrix_program_[precision].program(), |
279 renderer_->program_shadow_); | 301 renderer_->program_shadow_); |
280 } | 302 } |
281 | 303 |
282 void TestRenderPassMaskColorMatrixProgram() { | 304 void TestRenderPassProgramAA(TexCoordPrecision precision) { |
283 EXPECT_PROGRAM_VALID(&renderer_->render_pass_mask_color_matrix_program_); | 305 EXPECT_PROGRAM_VALID(&renderer_->render_pass_program_aa_[precision]); |
284 EXPECT_EQ(renderer_->render_pass_mask_color_matrix_program_.program(), | 306 EXPECT_EQ(renderer_->render_pass_program_aa_[precision].program(), |
285 renderer_->program_shadow_); | 307 renderer_->program_shadow_); |
286 } | 308 } |
287 | 309 |
288 void TestRenderPassProgramAA() { | 310 void TestRenderPassColorMatrixProgramAA(TexCoordPrecision precision) { |
289 EXPECT_PROGRAM_VALID(&renderer_->render_pass_program_aa_); | 311 EXPECT_PROGRAM_VALID( |
290 EXPECT_EQ(renderer_->render_pass_program_aa_.program(), | 312 &renderer_->render_pass_color_matrix_program_aa_[precision]); |
| 313 EXPECT_EQ(renderer_-> |
| 314 render_pass_color_matrix_program_aa_[precision].program(), |
291 renderer_->program_shadow_); | 315 renderer_->program_shadow_); |
292 } | 316 } |
293 | 317 |
294 void TestRenderPassColorMatrixProgramAA() { | 318 void TestRenderPassMaskProgramAA(TexCoordPrecision precision) { |
295 EXPECT_PROGRAM_VALID(&renderer_->render_pass_color_matrix_program_aa_); | 319 EXPECT_PROGRAM_VALID(&renderer_->render_pass_mask_program_aa_[precision]); |
296 EXPECT_EQ(renderer_->render_pass_color_matrix_program_aa_.program(), | 320 EXPECT_EQ(renderer_->render_pass_mask_program_aa_[precision].program(), |
297 renderer_->program_shadow_); | 321 renderer_->program_shadow_); |
298 } | 322 } |
299 | 323 |
300 void TestRenderPassMaskProgramAA() { | 324 void TestRenderPassMaskColorMatrixProgramAA(TexCoordPrecision precision) { |
301 EXPECT_PROGRAM_VALID(&renderer_->render_pass_mask_program_aa_); | 325 EXPECT_PROGRAM_VALID( |
302 EXPECT_EQ(renderer_->render_pass_mask_program_aa_.program(), | 326 &renderer_->render_pass_mask_color_matrix_program_aa_[precision]); |
| 327 EXPECT_EQ(renderer_-> |
| 328 render_pass_mask_color_matrix_program_aa_[precision].program(), |
303 renderer_->program_shadow_); | 329 renderer_->program_shadow_); |
304 } | 330 } |
305 | 331 |
306 void TestRenderPassMaskColorMatrixProgramAA() { | |
307 EXPECT_PROGRAM_VALID(&renderer_->render_pass_mask_color_matrix_program_aa_); | |
308 EXPECT_EQ(renderer_->render_pass_mask_color_matrix_program_aa_.program(), | |
309 renderer_->program_shadow_); | |
310 } | |
311 | |
312 void TestSolidColorProgramAA() { | 332 void TestSolidColorProgramAA() { |
313 EXPECT_PROGRAM_VALID(&renderer_->solid_color_program_aa_); | 333 EXPECT_PROGRAM_VALID(&renderer_->solid_color_program_aa_); |
314 EXPECT_EQ(renderer_->solid_color_program_aa_.program(), | 334 EXPECT_EQ(renderer_->solid_color_program_aa_.program(), |
315 renderer_->program_shadow_); | 335 renderer_->program_shadow_); |
316 } | 336 } |
317 | 337 |
318 LayerTreeSettings settings_; | 338 LayerTreeSettings settings_; |
319 FakeOutputSurfaceClient output_surface_client_; | 339 FakeOutputSurfaceClient output_surface_client_; |
320 scoped_ptr<FakeOutputSurface> output_surface_; | 340 scoped_ptr<FakeOutputSurface> output_surface_; |
321 FakeRendererClient renderer_client_; | 341 FakeRendererClient renderer_client_; |
(...skipping 1038 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1360 AddRenderPassQuad(root_pass, | 1380 AddRenderPassQuad(root_pass, |
1361 child_pass, | 1381 child_pass, |
1362 0, | 1382 0, |
1363 FilterOperations(), | 1383 FilterOperations(), |
1364 gfx::Transform()); | 1384 gfx::Transform()); |
1365 | 1385 |
1366 renderer_->DecideRenderPassAllocationsForFrame( | 1386 renderer_->DecideRenderPassAllocationsForFrame( |
1367 *renderer_client_.render_passes_in_draw_order()); | 1387 *renderer_client_.render_passes_in_draw_order()); |
1368 renderer_->DrawFrame( | 1388 renderer_->DrawFrame( |
1369 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); | 1389 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); |
1370 TestRenderPassProgram(); | 1390 TestRenderPassProgram(TexCoordPrecisionMedium); |
1371 | 1391 |
1372 // RenderPassColorMatrixProgram | 1392 // RenderPassColorMatrixProgram |
1373 render_passes->clear(); | 1393 render_passes->clear(); |
1374 | 1394 |
1375 child_pass = AddRenderPass( | 1395 child_pass = AddRenderPass( |
1376 render_passes, child_pass_id, child_rect, transform_causing_aa); | 1396 render_passes, child_pass_id, child_rect, transform_causing_aa); |
1377 | 1397 |
1378 root_pass = AddRenderPass( | 1398 root_pass = AddRenderPass( |
1379 render_passes, root_pass_id, viewport_rect, gfx::Transform()); | 1399 render_passes, root_pass_id, viewport_rect, gfx::Transform()); |
1380 | 1400 |
1381 AddRenderPassQuad(root_pass, child_pass, 0, filters, gfx::Transform()); | 1401 AddRenderPassQuad(root_pass, child_pass, 0, filters, gfx::Transform()); |
1382 | 1402 |
1383 renderer_->DecideRenderPassAllocationsForFrame( | 1403 renderer_->DecideRenderPassAllocationsForFrame( |
1384 *renderer_client_.render_passes_in_draw_order()); | 1404 *renderer_client_.render_passes_in_draw_order()); |
1385 renderer_->DrawFrame( | 1405 renderer_->DrawFrame( |
1386 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); | 1406 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); |
1387 TestRenderPassColorMatrixProgram(); | 1407 TestRenderPassColorMatrixProgram(TexCoordPrecisionMedium); |
1388 | 1408 |
1389 // RenderPassMaskProgram | 1409 // RenderPassMaskProgram |
1390 render_passes->clear(); | 1410 render_passes->clear(); |
1391 | 1411 |
1392 child_pass = AddRenderPass( | 1412 child_pass = AddRenderPass( |
1393 render_passes, child_pass_id, child_rect, gfx::Transform()); | 1413 render_passes, child_pass_id, child_rect, gfx::Transform()); |
1394 | 1414 |
1395 root_pass = AddRenderPass( | 1415 root_pass = AddRenderPass( |
1396 render_passes, root_pass_id, viewport_rect, gfx::Transform()); | 1416 render_passes, root_pass_id, viewport_rect, gfx::Transform()); |
1397 | 1417 |
1398 AddRenderPassQuad(root_pass, | 1418 AddRenderPassQuad(root_pass, |
1399 child_pass, | 1419 child_pass, |
1400 mask, | 1420 mask, |
1401 FilterOperations(), | 1421 FilterOperations(), |
1402 gfx::Transform()); | 1422 gfx::Transform()); |
1403 | 1423 |
1404 renderer_->DecideRenderPassAllocationsForFrame( | 1424 renderer_->DecideRenderPassAllocationsForFrame( |
1405 *renderer_client_.render_passes_in_draw_order()); | 1425 *renderer_client_.render_passes_in_draw_order()); |
1406 renderer_->DrawFrame( | 1426 renderer_->DrawFrame( |
1407 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); | 1427 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); |
1408 TestRenderPassMaskProgram(); | 1428 TestRenderPassMaskProgram(TexCoordPrecisionMedium); |
1409 | 1429 |
1410 // RenderPassMaskColorMatrixProgram | 1430 // RenderPassMaskColorMatrixProgram |
1411 render_passes->clear(); | 1431 render_passes->clear(); |
1412 | 1432 |
1413 child_pass = AddRenderPass( | 1433 child_pass = AddRenderPass( |
1414 render_passes, child_pass_id, child_rect, gfx::Transform()); | 1434 render_passes, child_pass_id, child_rect, gfx::Transform()); |
1415 | 1435 |
1416 root_pass = AddRenderPass( | 1436 root_pass = AddRenderPass( |
1417 render_passes, root_pass_id, viewport_rect, gfx::Transform()); | 1437 render_passes, root_pass_id, viewport_rect, gfx::Transform()); |
1418 | 1438 |
1419 AddRenderPassQuad(root_pass, child_pass, mask, filters, gfx::Transform()); | 1439 AddRenderPassQuad(root_pass, child_pass, mask, filters, gfx::Transform()); |
1420 | 1440 |
1421 renderer_->DecideRenderPassAllocationsForFrame( | 1441 renderer_->DecideRenderPassAllocationsForFrame( |
1422 *renderer_client_.render_passes_in_draw_order()); | 1442 *renderer_client_.render_passes_in_draw_order()); |
1423 renderer_->DrawFrame( | 1443 renderer_->DrawFrame( |
1424 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); | 1444 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); |
1425 TestRenderPassMaskColorMatrixProgram(); | 1445 TestRenderPassMaskColorMatrixProgram(TexCoordPrecisionMedium); |
1426 | 1446 |
1427 // RenderPassProgramAA | 1447 // RenderPassProgramAA |
1428 render_passes->clear(); | 1448 render_passes->clear(); |
1429 | 1449 |
1430 child_pass = AddRenderPass( | 1450 child_pass = AddRenderPass( |
1431 render_passes, child_pass_id, child_rect, transform_causing_aa); | 1451 render_passes, child_pass_id, child_rect, transform_causing_aa); |
1432 | 1452 |
1433 root_pass = AddRenderPass( | 1453 root_pass = AddRenderPass( |
1434 render_passes, root_pass_id, viewport_rect, gfx::Transform()); | 1454 render_passes, root_pass_id, viewport_rect, gfx::Transform()); |
1435 | 1455 |
1436 AddRenderPassQuad(root_pass, | 1456 AddRenderPassQuad(root_pass, |
1437 child_pass, | 1457 child_pass, |
1438 0, | 1458 0, |
1439 FilterOperations(), | 1459 FilterOperations(), |
1440 transform_causing_aa); | 1460 transform_causing_aa); |
1441 | 1461 |
1442 renderer_->DecideRenderPassAllocationsForFrame( | 1462 renderer_->DecideRenderPassAllocationsForFrame( |
1443 *renderer_client_.render_passes_in_draw_order()); | 1463 *renderer_client_.render_passes_in_draw_order()); |
1444 renderer_->DrawFrame( | 1464 renderer_->DrawFrame( |
1445 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); | 1465 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); |
1446 TestRenderPassProgramAA(); | 1466 TestRenderPassProgramAA(TexCoordPrecisionMedium); |
1447 | 1467 |
1448 // RenderPassColorMatrixProgramAA | 1468 // RenderPassColorMatrixProgramAA |
1449 render_passes->clear(); | 1469 render_passes->clear(); |
1450 | 1470 |
1451 child_pass = AddRenderPass( | 1471 child_pass = AddRenderPass( |
1452 render_passes, child_pass_id, child_rect, transform_causing_aa); | 1472 render_passes, child_pass_id, child_rect, transform_causing_aa); |
1453 | 1473 |
1454 root_pass = AddRenderPass( | 1474 root_pass = AddRenderPass( |
1455 render_passes, root_pass_id, viewport_rect, gfx::Transform()); | 1475 render_passes, root_pass_id, viewport_rect, gfx::Transform()); |
1456 | 1476 |
1457 AddRenderPassQuad(root_pass, child_pass, 0, filters, transform_causing_aa); | 1477 AddRenderPassQuad(root_pass, child_pass, 0, filters, transform_causing_aa); |
1458 | 1478 |
1459 renderer_->DecideRenderPassAllocationsForFrame( | 1479 renderer_->DecideRenderPassAllocationsForFrame( |
1460 *renderer_client_.render_passes_in_draw_order()); | 1480 *renderer_client_.render_passes_in_draw_order()); |
1461 renderer_->DrawFrame( | 1481 renderer_->DrawFrame( |
1462 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); | 1482 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); |
1463 TestRenderPassColorMatrixProgramAA(); | 1483 TestRenderPassColorMatrixProgramAA(TexCoordPrecisionMedium); |
1464 | 1484 |
1465 // RenderPassMaskProgramAA | 1485 // RenderPassMaskProgramAA |
1466 render_passes->clear(); | 1486 render_passes->clear(); |
1467 | 1487 |
1468 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect, | 1488 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect, |
1469 transform_causing_aa); | 1489 transform_causing_aa); |
1470 | 1490 |
1471 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect, | 1491 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect, |
1472 gfx::Transform()); | 1492 gfx::Transform()); |
1473 | 1493 |
1474 AddRenderPassQuad(root_pass, child_pass, mask, FilterOperations(), | 1494 AddRenderPassQuad(root_pass, child_pass, mask, FilterOperations(), |
1475 transform_causing_aa); | 1495 transform_causing_aa); |
1476 | 1496 |
1477 renderer_->DecideRenderPassAllocationsForFrame( | 1497 renderer_->DecideRenderPassAllocationsForFrame( |
1478 *renderer_client_.render_passes_in_draw_order()); | 1498 *renderer_client_.render_passes_in_draw_order()); |
1479 renderer_->DrawFrame( | 1499 renderer_->DrawFrame( |
1480 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); | 1500 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); |
1481 TestRenderPassMaskProgramAA(); | 1501 TestRenderPassMaskProgramAA(TexCoordPrecisionMedium); |
1482 | 1502 |
1483 // RenderPassMaskColorMatrixProgramAA | 1503 // RenderPassMaskColorMatrixProgramAA |
1484 render_passes->clear(); | 1504 render_passes->clear(); |
1485 | 1505 |
1486 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect, | 1506 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect, |
1487 transform_causing_aa); | 1507 transform_causing_aa); |
1488 | 1508 |
1489 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect, | 1509 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect, |
1490 transform_causing_aa); | 1510 transform_causing_aa); |
1491 | 1511 |
1492 AddRenderPassQuad(root_pass, child_pass, mask, filters, transform_causing_aa); | 1512 AddRenderPassQuad(root_pass, child_pass, mask, filters, transform_causing_aa); |
1493 | 1513 |
1494 renderer_->DecideRenderPassAllocationsForFrame( | 1514 renderer_->DecideRenderPassAllocationsForFrame( |
1495 *renderer_client_.render_passes_in_draw_order()); | 1515 *renderer_client_.render_passes_in_draw_order()); |
1496 renderer_->DrawFrame( | 1516 renderer_->DrawFrame( |
1497 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); | 1517 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); |
1498 TestRenderPassMaskColorMatrixProgramAA(); | 1518 TestRenderPassMaskColorMatrixProgramAA(TexCoordPrecisionMedium); |
1499 } | 1519 } |
1500 | 1520 |
1501 // At this time, the AA code path cannot be taken if the surface's rect would | 1521 // At this time, the AA code path cannot be taken if the surface's rect would |
1502 // project incorrectly by the given transform, because of w<0 clipping. | 1522 // project incorrectly by the given transform, because of w<0 clipping. |
1503 TEST_F(GLRendererShaderTest, DrawRenderPassQuadSkipsAAForClippingTransform) { | 1523 TEST_F(GLRendererShaderTest, DrawRenderPassQuadSkipsAAForClippingTransform) { |
1504 gfx::Rect child_rect(50, 50); | 1524 gfx::Rect child_rect(50, 50); |
1505 RenderPass::Id child_pass_id(2, 0); | 1525 RenderPass::Id child_pass_id(2, 0); |
1506 TestRenderPass* child_pass; | 1526 TestRenderPass* child_pass; |
1507 | 1527 |
1508 gfx::Rect viewport_rect(renderer_client_.DeviceViewport()); | 1528 gfx::Rect viewport_rect(renderer_client_.DeviceViewport()); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1540 FilterOperations(), | 1560 FilterOperations(), |
1541 transform_preventing_aa); | 1561 transform_preventing_aa); |
1542 | 1562 |
1543 renderer_->DecideRenderPassAllocationsForFrame( | 1563 renderer_->DecideRenderPassAllocationsForFrame( |
1544 *renderer_client_.render_passes_in_draw_order()); | 1564 *renderer_client_.render_passes_in_draw_order()); |
1545 renderer_->DrawFrame( | 1565 renderer_->DrawFrame( |
1546 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); | 1566 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true, false); |
1547 | 1567 |
1548 // If use_aa incorrectly ignores clipping, it will use the | 1568 // If use_aa incorrectly ignores clipping, it will use the |
1549 // RenderPassProgramAA shader instead of the RenderPassProgram. | 1569 // RenderPassProgramAA shader instead of the RenderPassProgram. |
1550 TestRenderPassProgram(); | 1570 TestRenderPassProgram(TexCoordPrecisionMedium); |
1551 } | 1571 } |
1552 | 1572 |
1553 TEST_F(GLRendererShaderTest, DrawSolidColorShader) { | 1573 TEST_F(GLRendererShaderTest, DrawSolidColorShader) { |
1554 gfx::Rect viewport_rect(renderer_client_.DeviceViewport()); | 1574 gfx::Rect viewport_rect(renderer_client_.DeviceViewport()); |
1555 ScopedPtrVector<RenderPass>* render_passes = | 1575 ScopedPtrVector<RenderPass>* render_passes = |
1556 renderer_client_.render_passes_in_draw_order(); | 1576 renderer_client_.render_passes_in_draw_order(); |
1557 | 1577 |
1558 RenderPass::Id root_pass_id(1, 0); | 1578 RenderPass::Id root_pass_id(1, 0); |
1559 TestRenderPass* root_pass; | 1579 TestRenderPass* root_pass; |
1560 | 1580 |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1776 base::MessageLoop::current()->Run(); | 1796 base::MessageLoop::current()->Run(); |
1777 | 1797 |
1778 // The sync point should have happened. | 1798 // The sync point should have happened. |
1779 EXPECT_EQ(1, sync_point_callback_count); | 1799 EXPECT_EQ(1, sync_point_callback_count); |
1780 EXPECT_EQ(1, other_callback_count); | 1800 EXPECT_EQ(1, other_callback_count); |
1781 } | 1801 } |
1782 #endif // OS_ANDROID | 1802 #endif // OS_ANDROID |
1783 | 1803 |
1784 } // namespace | 1804 } // namespace |
1785 } // namespace cc | 1805 } // namespace cc |
OLD | NEW |