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

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

Issue 83883002: cc: Allow TEXTURE_RECTANGLE_ARB to be used for tile textures. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address review feedback Created 7 years, 1 month 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 | Annotate | Revision Log
« 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 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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