Chromium Code Reviews| 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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 63 EXPECT_PROGRAM_VALID(renderer()->GetTileCheckerboardProgram()); | 63 EXPECT_PROGRAM_VALID(renderer()->GetTileCheckerboardProgram()); |
| 64 EXPECT_PROGRAM_VALID(renderer()->GetDebugBorderProgram()); | 64 EXPECT_PROGRAM_VALID(renderer()->GetDebugBorderProgram()); |
| 65 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgram()); | 65 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgram()); |
| 66 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgramAA()); | 66 EXPECT_PROGRAM_VALID(renderer()->GetSolidColorProgramAA()); |
| 67 TestShadersWithTexCoordPrecision(TexCoordPrecisionMedium); | 67 TestShadersWithTexCoordPrecision(TexCoordPrecisionMedium); |
| 68 TestShadersWithTexCoordPrecision(TexCoordPrecisionHigh); | 68 TestShadersWithTexCoordPrecision(TexCoordPrecisionHigh); |
| 69 ASSERT_FALSE(renderer()->IsContextLost()); | 69 ASSERT_FALSE(renderer()->IsContextLost()); |
| 70 } | 70 } |
| 71 | 71 |
| 72 void TestShadersWithTexCoordPrecision(TexCoordPrecision precision) { | 72 void TestShadersWithTexCoordPrecision(TexCoordPrecision precision) { |
| 73 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassProgram(precision)); | 73 for (SkXfermode::Mode mode = kDefaultBlendMode; mode <= kLastBlendMode;) { |
|
enne (OOO)
2014/10/16 01:41:25
This is weird to read. I would expect loops to go
rosca
2014/10/16 16:14:56
Done.
| |
| 74 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassProgramAA(precision)); | 74 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassProgram(precision, mode)); |
| 75 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskProgram(precision)); | 75 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassProgramAA(precision, mode)); |
| 76 EXPECT_PROGRAM_VALID(renderer()->GetRenderPassMaskProgramAA(precision)); | 76 EXPECT_PROGRAM_VALID( |
| 77 EXPECT_PROGRAM_VALID( | 77 renderer()->GetRenderPassMaskProgram(precision, mode)); |
| 78 renderer()->GetRenderPassColorMatrixProgram(precision)); | 78 EXPECT_PROGRAM_VALID( |
| 79 EXPECT_PROGRAM_VALID( | 79 renderer()->GetRenderPassMaskProgramAA(precision, mode)); |
| 80 renderer()->GetRenderPassMaskColorMatrixProgramAA(precision)); | 80 EXPECT_PROGRAM_VALID( |
| 81 EXPECT_PROGRAM_VALID( | 81 renderer()->GetRenderPassColorMatrixProgram(precision, mode)); |
| 82 renderer()->GetRenderPassColorMatrixProgramAA(precision)); | 82 EXPECT_PROGRAM_VALID( |
| 83 EXPECT_PROGRAM_VALID( | 83 renderer()->GetRenderPassMaskColorMatrixProgramAA(precision, mode)); |
| 84 renderer()->GetRenderPassMaskColorMatrixProgram(precision)); | 84 EXPECT_PROGRAM_VALID( |
| 85 renderer()->GetRenderPassColorMatrixProgramAA(precision, mode)); | |
| 86 EXPECT_PROGRAM_VALID( | |
| 87 renderer()->GetRenderPassMaskColorMatrixProgram(precision, mode)); | |
| 88 if (mode < kFirstBlendMode) | |
| 89 mode = kFirstBlendMode; | |
| 90 else | |
| 91 mode = static_cast<SkXfermode::Mode>(mode + 1); | |
| 92 } | |
| 85 EXPECT_PROGRAM_VALID(renderer()->GetTextureProgram(precision)); | 93 EXPECT_PROGRAM_VALID(renderer()->GetTextureProgram(precision)); |
| 86 EXPECT_PROGRAM_VALID( | 94 EXPECT_PROGRAM_VALID( |
| 87 renderer()->GetNonPremultipliedTextureProgram(precision)); | 95 renderer()->GetNonPremultipliedTextureProgram(precision)); |
| 88 EXPECT_PROGRAM_VALID(renderer()->GetTextureBackgroundProgram(precision)); | 96 EXPECT_PROGRAM_VALID(renderer()->GetTextureBackgroundProgram(precision)); |
| 89 EXPECT_PROGRAM_VALID( | 97 EXPECT_PROGRAM_VALID( |
| 90 renderer()->GetNonPremultipliedTextureBackgroundProgram(precision)); | 98 renderer()->GetNonPremultipliedTextureBackgroundProgram(precision)); |
| 91 EXPECT_PROGRAM_VALID(renderer()->GetTextureIOSurfaceProgram(precision)); | 99 EXPECT_PROGRAM_VALID(renderer()->GetTextureIOSurfaceProgram(precision)); |
| 92 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVProgram(precision)); | 100 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVProgram(precision)); |
| 93 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVAProgram(precision)); | 101 EXPECT_PROGRAM_VALID(renderer()->GetVideoYUVAProgram(precision)); |
| 94 // This is unlikely to be ever true in tests due to usage of osmesa. | 102 // This is unlikely to be ever true in tests due to usage of osmesa. |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 197 0, | 205 0, |
| 198 false, | 206 false, |
| 199 1, | 207 1, |
| 200 false).Pass(); | 208 false).Pass(); |
| 201 renderer_.reset(new FakeRendererGL(&renderer_client_, | 209 renderer_.reset(new FakeRendererGL(&renderer_client_, |
| 202 &settings_, | 210 &settings_, |
| 203 output_surface_.get(), | 211 output_surface_.get(), |
| 204 resource_provider_.get())); | 212 resource_provider_.get())); |
| 205 } | 213 } |
| 206 | 214 |
| 207 void TestRenderPassProgram(TexCoordPrecision precision) { | 215 void TestRenderPassProgram(TexCoordPrecision precision, |
| 208 EXPECT_PROGRAM_VALID(&renderer_->render_pass_program_[precision]); | 216 SkXfermode::Mode mode) { |
| 209 EXPECT_EQ(renderer_->render_pass_program_[precision].program(), | 217 int bm = index_for_blend_mode(mode); |
| 218 EXPECT_PROGRAM_VALID(&renderer_->render_pass_program_[precision][bm]); | |
| 219 EXPECT_EQ(renderer_->render_pass_program_[precision][bm].program(), | |
| 210 renderer_->program_shadow_); | 220 renderer_->program_shadow_); |
| 211 } | 221 } |
| 212 | 222 |
| 213 void TestRenderPassColorMatrixProgram(TexCoordPrecision precision) { | 223 void TestRenderPassColorMatrixProgram(TexCoordPrecision precision, |
| 224 SkXfermode::Mode mode) { | |
| 225 int bm = index_for_blend_mode(mode); | |
| 214 EXPECT_PROGRAM_VALID( | 226 EXPECT_PROGRAM_VALID( |
| 215 &renderer_->render_pass_color_matrix_program_[precision]); | 227 &renderer_->render_pass_color_matrix_program_[precision][bm]); |
| 216 EXPECT_EQ(renderer_->render_pass_color_matrix_program_[precision].program(), | 228 EXPECT_EQ( |
| 229 renderer_->render_pass_color_matrix_program_[precision][bm].program(), | |
| 230 renderer_->program_shadow_); | |
| 231 } | |
| 232 | |
| 233 void TestRenderPassMaskProgram(TexCoordPrecision precision, | |
| 234 SkXfermode::Mode mode) { | |
| 235 int bm = index_for_blend_mode(mode); | |
| 236 EXPECT_PROGRAM_VALID(&renderer_->render_pass_mask_program_[precision][bm]); | |
| 237 EXPECT_EQ(renderer_->render_pass_mask_program_[precision][bm].program(), | |
| 217 renderer_->program_shadow_); | 238 renderer_->program_shadow_); |
| 218 } | 239 } |
| 219 | 240 |
| 220 void TestRenderPassMaskProgram(TexCoordPrecision precision) { | 241 void TestRenderPassMaskColorMatrixProgram(TexCoordPrecision precision, |
| 221 EXPECT_PROGRAM_VALID(&renderer_->render_pass_mask_program_[precision]); | 242 SkXfermode::Mode mode) { |
| 222 EXPECT_EQ(renderer_->render_pass_mask_program_[precision].program(), | 243 int bm = index_for_blend_mode(mode); |
| 223 renderer_->program_shadow_); | |
| 224 } | |
| 225 | |
| 226 void TestRenderPassMaskColorMatrixProgram(TexCoordPrecision precision) { | |
| 227 EXPECT_PROGRAM_VALID( | 244 EXPECT_PROGRAM_VALID( |
| 228 &renderer_->render_pass_mask_color_matrix_program_[precision]); | 245 &renderer_->render_pass_mask_color_matrix_program_[precision][bm]); |
| 229 EXPECT_EQ( | 246 EXPECT_EQ(renderer_->render_pass_mask_color_matrix_program_[precision][bm] |
| 230 renderer_->render_pass_mask_color_matrix_program_[precision].program(), | |
| 231 renderer_->program_shadow_); | |
| 232 } | |
| 233 | |
| 234 void TestRenderPassProgramAA(TexCoordPrecision precision) { | |
| 235 EXPECT_PROGRAM_VALID(&renderer_->render_pass_program_aa_[precision]); | |
| 236 EXPECT_EQ(renderer_->render_pass_program_aa_[precision].program(), | |
| 237 renderer_->program_shadow_); | |
| 238 } | |
| 239 | |
| 240 void TestRenderPassColorMatrixProgramAA(TexCoordPrecision precision) { | |
| 241 EXPECT_PROGRAM_VALID( | |
| 242 &renderer_->render_pass_color_matrix_program_aa_[precision]); | |
| 243 EXPECT_EQ( | |
| 244 renderer_->render_pass_color_matrix_program_aa_[precision].program(), | |
| 245 renderer_->program_shadow_); | |
| 246 } | |
| 247 | |
| 248 void TestRenderPassMaskProgramAA(TexCoordPrecision precision) { | |
| 249 EXPECT_PROGRAM_VALID(&renderer_->render_pass_mask_program_aa_[precision]); | |
| 250 EXPECT_EQ(renderer_->render_pass_mask_program_aa_[precision].program(), | |
| 251 renderer_->program_shadow_); | |
| 252 } | |
| 253 | |
| 254 void TestRenderPassMaskColorMatrixProgramAA(TexCoordPrecision precision) { | |
| 255 EXPECT_PROGRAM_VALID( | |
| 256 &renderer_->render_pass_mask_color_matrix_program_aa_[precision]); | |
| 257 EXPECT_EQ(renderer_->render_pass_mask_color_matrix_program_aa_[precision] | |
| 258 .program(), | 247 .program(), |
| 259 renderer_->program_shadow_); | 248 renderer_->program_shadow_); |
| 260 } | 249 } |
| 261 | 250 |
| 251 void TestRenderPassProgramAA(TexCoordPrecision precision, | |
| 252 SkXfermode::Mode mode) { | |
| 253 int bm = index_for_blend_mode(mode); | |
| 254 EXPECT_PROGRAM_VALID(&renderer_->render_pass_program_aa_[precision][bm]); | |
| 255 EXPECT_EQ(renderer_->render_pass_program_aa_[precision][bm].program(), | |
| 256 renderer_->program_shadow_); | |
| 257 } | |
| 258 | |
| 259 void TestRenderPassColorMatrixProgramAA(TexCoordPrecision precision, | |
| 260 SkXfermode::Mode mode) { | |
| 261 int bm = index_for_blend_mode(mode); | |
| 262 EXPECT_PROGRAM_VALID( | |
| 263 &renderer_->render_pass_color_matrix_program_aa_[precision][bm]); | |
| 264 EXPECT_EQ(renderer_->render_pass_color_matrix_program_aa_[precision][bm] | |
| 265 .program(), | |
| 266 renderer_->program_shadow_); | |
| 267 } | |
| 268 | |
| 269 void TestRenderPassMaskProgramAA(TexCoordPrecision precision, | |
| 270 SkXfermode::Mode mode) { | |
| 271 int bm = index_for_blend_mode(mode); | |
| 272 EXPECT_PROGRAM_VALID( | |
| 273 &renderer_->render_pass_mask_program_aa_[precision][bm]); | |
| 274 EXPECT_EQ(renderer_->render_pass_mask_program_aa_[precision][bm].program(), | |
| 275 renderer_->program_shadow_); | |
| 276 } | |
| 277 | |
| 278 void TestRenderPassMaskColorMatrixProgramAA(TexCoordPrecision precision, | |
| 279 SkXfermode::Mode mode) { | |
| 280 int bm = index_for_blend_mode(mode); | |
|
enne (OOO)
2014/10/16 01:41:25
nit: please don't abbreviate bm; make it blend_mod
rosca
2014/10/16 16:14:56
Done.
| |
| 281 EXPECT_PROGRAM_VALID( | |
| 282 &renderer_->render_pass_mask_color_matrix_program_aa_[precision][bm]); | |
| 283 EXPECT_EQ( | |
| 284 renderer_->render_pass_mask_color_matrix_program_aa_[precision][bm] | |
| 285 .program(), | |
| 286 renderer_->program_shadow_); | |
| 287 } | |
| 288 | |
| 262 void TestSolidColorProgramAA() { | 289 void TestSolidColorProgramAA() { |
| 263 EXPECT_PROGRAM_VALID(&renderer_->solid_color_program_aa_); | 290 EXPECT_PROGRAM_VALID(&renderer_->solid_color_program_aa_); |
| 264 EXPECT_EQ(renderer_->solid_color_program_aa_.program(), | 291 EXPECT_EQ(renderer_->solid_color_program_aa_.program(), |
| 265 renderer_->program_shadow_); | 292 renderer_->program_shadow_); |
| 266 } | 293 } |
| 267 | 294 |
| 268 LayerTreeSettings settings_; | 295 LayerTreeSettings settings_; |
| 269 FakeOutputSurfaceClient output_surface_client_; | 296 FakeOutputSurfaceClient output_surface_client_; |
| 270 scoped_ptr<FakeOutputSurface> output_surface_; | 297 scoped_ptr<FakeOutputSurface> output_surface_; |
| 271 FakeRendererClient renderer_client_; | 298 FakeRendererClient renderer_client_; |
| (...skipping 1108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1380 skia::RefPtr<SkColorFilter> color_filter( | 1407 skia::RefPtr<SkColorFilter> color_filter( |
| 1381 skia::AdoptRef(SkColorMatrixFilter::Create(matrix))); | 1408 skia::AdoptRef(SkColorMatrixFilter::Create(matrix))); |
| 1382 skia::RefPtr<SkImageFilter> filter = skia::AdoptRef( | 1409 skia::RefPtr<SkImageFilter> filter = skia::AdoptRef( |
| 1383 SkColorFilterImageFilter::Create(color_filter.get(), NULL)); | 1410 SkColorFilterImageFilter::Create(color_filter.get(), NULL)); |
| 1384 FilterOperations filters; | 1411 FilterOperations filters; |
| 1385 filters.Append(FilterOperation::CreateReferenceFilter(filter)); | 1412 filters.Append(FilterOperation::CreateReferenceFilter(filter)); |
| 1386 | 1413 |
| 1387 gfx::Transform transform_causing_aa; | 1414 gfx::Transform transform_causing_aa; |
| 1388 transform_causing_aa.Rotate(20.0); | 1415 transform_causing_aa.Rotate(20.0); |
| 1389 | 1416 |
| 1390 // RenderPassProgram | 1417 for (SkXfermode::Mode mode = kDefaultBlendMode; mode <= kLastBlendMode;) { |
| 1391 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1418 // RenderPassProgram |
| 1392 child_pass_id, | 1419 render_passes_in_draw_order_.clear(); |
| 1393 child_rect, | 1420 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1394 gfx::Transform()); | 1421 child_pass_id, |
| 1395 | 1422 child_rect, |
| 1396 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1423 gfx::Transform()); |
| 1397 root_pass_id, | 1424 |
| 1398 viewport_rect, | 1425 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1399 gfx::Transform()); | 1426 root_pass_id, |
| 1400 | 1427 viewport_rect, |
| 1401 AddRenderPassQuad( | 1428 gfx::Transform()); |
| 1402 root_pass, child_pass, 0, FilterOperations(), gfx::Transform()); | 1429 |
| 1403 | 1430 AddRenderPassQuad( |
| 1404 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1431 root_pass, child_pass, 0, FilterOperations(), gfx::Transform(), mode); |
| 1405 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1432 |
| 1406 1.f, | 1433 renderer_->DecideRenderPassAllocationsForFrame( |
| 1407 viewport_rect, | 1434 render_passes_in_draw_order_); |
| 1408 viewport_rect, | 1435 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1409 false); | 1436 1.f, |
| 1410 TestRenderPassProgram(TexCoordPrecisionMedium); | 1437 viewport_rect, |
| 1411 | 1438 viewport_rect, |
| 1412 // RenderPassColorMatrixProgram | 1439 false); |
| 1413 render_passes_in_draw_order_.clear(); | 1440 TestRenderPassProgram(TexCoordPrecisionMedium, mode); |
| 1414 | 1441 |
| 1415 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1442 // RenderPassColorMatrixProgram |
| 1416 child_pass_id, | 1443 render_passes_in_draw_order_.clear(); |
| 1417 child_rect, | 1444 |
| 1418 transform_causing_aa); | 1445 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1419 | 1446 child_pass_id, |
| 1420 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1447 child_rect, |
| 1421 root_pass_id, | 1448 transform_causing_aa); |
| 1422 viewport_rect, | 1449 |
| 1423 gfx::Transform()); | 1450 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1424 | 1451 root_pass_id, |
| 1425 AddRenderPassQuad(root_pass, child_pass, 0, filters, gfx::Transform()); | 1452 viewport_rect, |
| 1426 | 1453 gfx::Transform()); |
| 1427 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1454 |
| 1428 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1455 AddRenderPassQuad( |
| 1429 1.f, | 1456 root_pass, child_pass, 0, filters, gfx::Transform(), mode); |
| 1430 viewport_rect, | 1457 |
| 1431 viewport_rect, | 1458 renderer_->DecideRenderPassAllocationsForFrame( |
| 1432 false); | 1459 render_passes_in_draw_order_); |
| 1433 TestRenderPassColorMatrixProgram(TexCoordPrecisionMedium); | 1460 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1434 | 1461 1.f, |
| 1435 // RenderPassMaskProgram | 1462 viewport_rect, |
| 1436 render_passes_in_draw_order_.clear(); | 1463 viewport_rect, |
| 1437 | 1464 false); |
| 1438 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1465 TestRenderPassColorMatrixProgram(TexCoordPrecisionMedium, mode); |
| 1439 child_pass_id, | 1466 |
| 1440 child_rect, | 1467 // RenderPassMaskProgram |
| 1441 gfx::Transform()); | 1468 render_passes_in_draw_order_.clear(); |
| 1442 | 1469 |
| 1443 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1470 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1444 root_pass_id, | 1471 child_pass_id, |
| 1445 viewport_rect, | 1472 child_rect, |
| 1446 gfx::Transform()); | 1473 gfx::Transform()); |
| 1447 | 1474 |
| 1448 AddRenderPassQuad( | 1475 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1449 root_pass, child_pass, mask, FilterOperations(), gfx::Transform()); | 1476 root_pass_id, |
| 1450 | 1477 viewport_rect, |
| 1451 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1478 gfx::Transform()); |
| 1452 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1479 |
| 1453 1.f, | 1480 AddRenderPassQuad(root_pass, |
| 1454 viewport_rect, | 1481 child_pass, |
| 1455 viewport_rect, | 1482 mask, |
| 1456 false); | 1483 FilterOperations(), |
| 1457 TestRenderPassMaskProgram(TexCoordPrecisionMedium); | 1484 gfx::Transform(), |
| 1458 | 1485 mode); |
| 1459 // RenderPassMaskColorMatrixProgram | 1486 |
| 1460 render_passes_in_draw_order_.clear(); | 1487 renderer_->DecideRenderPassAllocationsForFrame( |
| 1461 | 1488 render_passes_in_draw_order_); |
| 1462 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1489 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1463 child_pass_id, | 1490 1.f, |
| 1464 child_rect, | 1491 viewport_rect, |
| 1465 gfx::Transform()); | 1492 viewport_rect, |
| 1466 | 1493 false); |
| 1467 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1494 TestRenderPassMaskProgram(TexCoordPrecisionMedium, mode); |
| 1468 root_pass_id, | 1495 |
| 1469 viewport_rect, | 1496 // RenderPassMaskColorMatrixProgram |
| 1470 gfx::Transform()); | 1497 render_passes_in_draw_order_.clear(); |
| 1471 | 1498 |
| 1472 AddRenderPassQuad(root_pass, child_pass, mask, filters, gfx::Transform()); | 1499 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1473 | 1500 child_pass_id, |
| 1474 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1501 child_rect, |
| 1475 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1502 gfx::Transform()); |
| 1476 1.f, | 1503 |
| 1477 viewport_rect, | 1504 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1478 viewport_rect, | 1505 root_pass_id, |
| 1479 false); | 1506 viewport_rect, |
| 1480 TestRenderPassMaskColorMatrixProgram(TexCoordPrecisionMedium); | 1507 gfx::Transform()); |
| 1481 | 1508 |
| 1482 // RenderPassProgramAA | 1509 AddRenderPassQuad( |
| 1483 render_passes_in_draw_order_.clear(); | 1510 root_pass, child_pass, mask, filters, gfx::Transform(), mode); |
| 1484 | 1511 |
| 1485 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1512 renderer_->DecideRenderPassAllocationsForFrame( |
| 1486 child_pass_id, | 1513 render_passes_in_draw_order_); |
| 1487 child_rect, | 1514 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1488 transform_causing_aa); | 1515 1.f, |
| 1489 | 1516 viewport_rect, |
| 1490 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1517 viewport_rect, |
| 1491 root_pass_id, | 1518 false); |
| 1492 viewport_rect, | 1519 TestRenderPassMaskColorMatrixProgram(TexCoordPrecisionMedium, mode); |
| 1493 gfx::Transform()); | 1520 |
| 1494 | 1521 // RenderPassProgramAA |
| 1495 AddRenderPassQuad( | 1522 render_passes_in_draw_order_.clear(); |
| 1496 root_pass, child_pass, 0, FilterOperations(), transform_causing_aa); | 1523 |
| 1497 | 1524 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1498 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1525 child_pass_id, |
| 1499 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1526 child_rect, |
| 1500 1.f, | 1527 transform_causing_aa); |
| 1501 viewport_rect, | 1528 |
| 1502 viewport_rect, | 1529 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1503 false); | 1530 root_pass_id, |
| 1504 TestRenderPassProgramAA(TexCoordPrecisionMedium); | 1531 viewport_rect, |
| 1505 | 1532 gfx::Transform()); |
| 1506 // RenderPassColorMatrixProgramAA | 1533 |
| 1507 render_passes_in_draw_order_.clear(); | 1534 AddRenderPassQuad(root_pass, |
| 1508 | 1535 child_pass, |
| 1509 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1536 0, |
| 1510 child_pass_id, | 1537 FilterOperations(), |
| 1511 child_rect, | 1538 transform_causing_aa, |
| 1512 transform_causing_aa); | 1539 mode); |
| 1513 | 1540 |
| 1514 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1541 renderer_->DecideRenderPassAllocationsForFrame( |
| 1515 root_pass_id, | 1542 render_passes_in_draw_order_); |
| 1516 viewport_rect, | 1543 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1517 gfx::Transform()); | 1544 1.f, |
| 1518 | 1545 viewport_rect, |
| 1519 AddRenderPassQuad(root_pass, child_pass, 0, filters, transform_causing_aa); | 1546 viewport_rect, |
| 1520 | 1547 false); |
| 1521 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1548 TestRenderPassProgramAA(TexCoordPrecisionMedium, mode); |
| 1522 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1549 |
| 1523 1.f, | 1550 // RenderPassColorMatrixProgramAA |
| 1524 viewport_rect, | 1551 render_passes_in_draw_order_.clear(); |
| 1525 viewport_rect, | 1552 |
| 1526 false); | 1553 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1527 TestRenderPassColorMatrixProgramAA(TexCoordPrecisionMedium); | 1554 child_pass_id, |
| 1528 | 1555 child_rect, |
| 1529 // RenderPassMaskProgramAA | 1556 transform_causing_aa); |
| 1530 render_passes_in_draw_order_.clear(); | 1557 |
| 1531 | 1558 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1532 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1559 root_pass_id, |
| 1533 child_pass_id, | 1560 viewport_rect, |
| 1534 child_rect, | 1561 gfx::Transform()); |
| 1535 transform_causing_aa); | 1562 |
| 1536 | 1563 AddRenderPassQuad( |
| 1537 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1564 root_pass, child_pass, 0, filters, transform_causing_aa, mode); |
| 1538 root_pass_id, | 1565 |
| 1539 viewport_rect, | 1566 renderer_->DecideRenderPassAllocationsForFrame( |
| 1540 gfx::Transform()); | 1567 render_passes_in_draw_order_); |
| 1541 | 1568 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1542 AddRenderPassQuad( | 1569 1.f, |
| 1543 root_pass, child_pass, mask, FilterOperations(), transform_causing_aa); | 1570 viewport_rect, |
| 1544 | 1571 viewport_rect, |
| 1545 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1572 false); |
| 1546 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1573 TestRenderPassColorMatrixProgramAA(TexCoordPrecisionMedium, mode); |
| 1547 1.f, | 1574 |
| 1548 viewport_rect, | 1575 // RenderPassMaskProgramAA |
| 1549 viewport_rect, | 1576 render_passes_in_draw_order_.clear(); |
| 1550 false); | 1577 |
| 1551 TestRenderPassMaskProgramAA(TexCoordPrecisionMedium); | 1578 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1552 | 1579 child_pass_id, |
| 1553 // RenderPassMaskColorMatrixProgramAA | 1580 child_rect, |
| 1554 render_passes_in_draw_order_.clear(); | 1581 transform_causing_aa); |
| 1555 | 1582 |
| 1556 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1583 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1557 child_pass_id, | 1584 root_pass_id, |
| 1558 child_rect, | 1585 viewport_rect, |
| 1559 transform_causing_aa); | 1586 gfx::Transform()); |
| 1560 | 1587 |
| 1561 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1588 AddRenderPassQuad(root_pass, |
| 1562 root_pass_id, | 1589 child_pass, |
| 1563 viewport_rect, | 1590 mask, |
| 1564 transform_causing_aa); | 1591 FilterOperations(), |
| 1565 | 1592 transform_causing_aa, |
| 1566 AddRenderPassQuad(root_pass, child_pass, mask, filters, transform_causing_aa); | 1593 mode); |
| 1567 | 1594 |
| 1568 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1595 renderer_->DecideRenderPassAllocationsForFrame( |
| 1569 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1596 render_passes_in_draw_order_); |
| 1570 1.f, | 1597 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1571 viewport_rect, | 1598 1.f, |
| 1572 viewport_rect, | 1599 viewport_rect, |
| 1573 false); | 1600 viewport_rect, |
| 1574 TestRenderPassMaskColorMatrixProgramAA(TexCoordPrecisionMedium); | 1601 false); |
| 1602 TestRenderPassMaskProgramAA(TexCoordPrecisionMedium, mode); | |
| 1603 | |
| 1604 // RenderPassMaskColorMatrixProgramAA | |
| 1605 render_passes_in_draw_order_.clear(); | |
| 1606 | |
| 1607 child_pass = AddRenderPass(&render_passes_in_draw_order_, | |
| 1608 child_pass_id, | |
| 1609 child_rect, | |
| 1610 transform_causing_aa); | |
| 1611 | |
| 1612 root_pass = AddRenderPass(&render_passes_in_draw_order_, | |
| 1613 root_pass_id, | |
| 1614 viewport_rect, | |
| 1615 transform_causing_aa); | |
| 1616 | |
| 1617 AddRenderPassQuad( | |
| 1618 root_pass, child_pass, mask, filters, transform_causing_aa, mode); | |
| 1619 | |
| 1620 renderer_->DecideRenderPassAllocationsForFrame( | |
| 1621 render_passes_in_draw_order_); | |
| 1622 renderer_->DrawFrame(&render_passes_in_draw_order_, | |
| 1623 1.f, | |
| 1624 viewport_rect, | |
| 1625 viewport_rect, | |
| 1626 false); | |
| 1627 TestRenderPassMaskColorMatrixProgramAA(TexCoordPrecisionMedium, mode); | |
| 1628 | |
| 1629 if (mode < kFirstBlendMode) | |
| 1630 mode = kFirstBlendMode; | |
| 1631 else | |
| 1632 mode = static_cast<SkXfermode::Mode>(mode + 1); | |
| 1633 } | |
| 1575 } | 1634 } |
| 1576 | 1635 |
| 1577 // At this time, the AA code path cannot be taken if the surface's rect would | 1636 // At this time, the AA code path cannot be taken if the surface's rect would |
| 1578 // project incorrectly by the given transform, because of w<0 clipping. | 1637 // project incorrectly by the given transform, because of w<0 clipping. |
| 1579 TEST_F(GLRendererShaderTest, DrawRenderPassQuadSkipsAAForClippingTransform) { | 1638 TEST_F(GLRendererShaderTest, DrawRenderPassQuadSkipsAAForClippingTransform) { |
| 1580 gfx::Rect child_rect(50, 50); | 1639 gfx::Rect child_rect(50, 50); |
| 1581 RenderPassId child_pass_id(2, 0); | 1640 RenderPassId child_pass_id(2, 0); |
| 1582 TestRenderPass* child_pass; | 1641 TestRenderPass* child_pass; |
| 1583 | 1642 |
| 1584 gfx::Rect viewport_rect(1, 1); | 1643 gfx::Rect viewport_rect(1, 1); |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 1599 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1658 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1600 child_pass_id, | 1659 child_pass_id, |
| 1601 child_rect, | 1660 child_rect, |
| 1602 transform_preventing_aa); | 1661 transform_preventing_aa); |
| 1603 | 1662 |
| 1604 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1663 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
| 1605 root_pass_id, | 1664 root_pass_id, |
| 1606 viewport_rect, | 1665 viewport_rect, |
| 1607 gfx::Transform()); | 1666 gfx::Transform()); |
| 1608 | 1667 |
| 1609 AddRenderPassQuad( | 1668 AddRenderPassQuad(root_pass, |
| 1610 root_pass, child_pass, 0, FilterOperations(), transform_preventing_aa); | 1669 child_pass, |
| 1670 0, | |
| 1671 FilterOperations(), | |
| 1672 transform_preventing_aa, | |
| 1673 kDefaultBlendMode); | |
| 1611 | 1674 |
| 1612 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1675 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
| 1613 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1676 renderer_->DrawFrame(&render_passes_in_draw_order_, |
| 1614 1.f, | 1677 1.f, |
| 1615 viewport_rect, | 1678 viewport_rect, |
| 1616 viewport_rect, | 1679 viewport_rect, |
| 1617 false); | 1680 false); |
| 1618 | 1681 |
| 1619 // If use_aa incorrectly ignores clipping, it will use the | 1682 // If use_aa incorrectly ignores clipping, it will use the |
| 1620 // RenderPassProgramAA shader instead of the RenderPassProgram. | 1683 // RenderPassProgramAA shader instead of the RenderPassProgram. |
| 1621 TestRenderPassProgram(TexCoordPrecisionMedium); | 1684 TestRenderPassProgram(TexCoordPrecisionMedium, kDefaultBlendMode); |
| 1622 } | 1685 } |
| 1623 | 1686 |
| 1624 TEST_F(GLRendererShaderTest, DrawSolidColorShader) { | 1687 TEST_F(GLRendererShaderTest, DrawSolidColorShader) { |
| 1625 gfx::Rect viewport_rect(1, 1); | 1688 gfx::Rect viewport_rect(1, 1); |
| 1626 RenderPassId root_pass_id(1, 0); | 1689 RenderPassId root_pass_id(1, 0); |
| 1627 TestRenderPass* root_pass; | 1690 TestRenderPass* root_pass; |
| 1628 | 1691 |
| 1629 gfx::Transform pixel_aligned_transform_causing_aa; | 1692 gfx::Transform pixel_aligned_transform_causing_aa; |
| 1630 pixel_aligned_transform_causing_aa.Translate(25.5f, 25.5f); | 1693 pixel_aligned_transform_causing_aa.Translate(25.5f, 25.5f); |
| 1631 pixel_aligned_transform_causing_aa.Scale(0.5f, 0.5f); | 1694 pixel_aligned_transform_causing_aa.Scale(0.5f, 0.5f); |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1850 base::MessageLoop::current()->Run(); | 1913 base::MessageLoop::current()->Run(); |
| 1851 | 1914 |
| 1852 // The sync point should have happened. | 1915 // The sync point should have happened. |
| 1853 EXPECT_EQ(1, sync_point_callback_count); | 1916 EXPECT_EQ(1, sync_point_callback_count); |
| 1854 EXPECT_EQ(1, other_callback_count); | 1917 EXPECT_EQ(1, other_callback_count); |
| 1855 } | 1918 } |
| 1856 #endif // OS_ANDROID | 1919 #endif // OS_ANDROID |
| 1857 | 1920 |
| 1858 } // namespace | 1921 } // namespace |
| 1859 } // namespace cc | 1922 } // namespace cc |
| OLD | NEW |