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/debug/test_web_graphics_context_3d.h" | 10 #include "cc/debug/test_web_graphics_context_3d.h" |
(...skipping 1214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1225 matrix[10] = 0.213f - 0.213f * amount; | 1225 matrix[10] = 0.213f - 0.213f * amount; |
1226 matrix[11] = 0.715f - 0.715f * amount; | 1226 matrix[11] = 0.715f - 0.715f * amount; |
1227 matrix[12] = 1.f - (matrix[10] + matrix[11]); | 1227 matrix[12] = 1.f - (matrix[10] + matrix[11]); |
1228 matrix[13] = matrix[14] = 0; | 1228 matrix[13] = matrix[14] = 0; |
1229 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0; | 1229 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0; |
1230 matrix[18] = 1; | 1230 matrix[18] = 1; |
1231 skia::RefPtr<SkColorFilter> color_filter( | 1231 skia::RefPtr<SkColorFilter> color_filter( |
1232 skia::AdoptRef(new SkColorMatrixFilter(matrix))); | 1232 skia::AdoptRef(new SkColorMatrixFilter(matrix))); |
1233 skia::RefPtr<SkImageFilter> filter = skia::AdoptRef( | 1233 skia::RefPtr<SkImageFilter> filter = skia::AdoptRef( |
1234 SkColorFilterImageFilter::Create(color_filter.get(), NULL)); | 1234 SkColorFilterImageFilter::Create(color_filter.get(), NULL)); |
| 1235 FilterOperations filters; |
| 1236 filters.Append(FilterOperation::CreateReferenceFilter(filter)); |
1235 | 1237 |
1236 gfx::Transform transform_causing_aa; | 1238 gfx::Transform transform_causing_aa; |
1237 transform_causing_aa.Rotate(20.0); | 1239 transform_causing_aa.Rotate(20.0); |
1238 | 1240 |
1239 // RenderPassProgram | 1241 // RenderPassProgram |
1240 render_passes->clear(); | 1242 render_passes->clear(); |
1241 | 1243 |
1242 child_pass = AddRenderPass( | 1244 child_pass = AddRenderPass( |
1243 render_passes, child_pass_id, child_rect, gfx::Transform()); | 1245 render_passes, child_pass_id, child_rect, gfx::Transform()); |
1244 | 1246 |
1245 root_pass = AddRenderPass( | 1247 root_pass = AddRenderPass( |
1246 render_passes, root_pass_id, viewport_rect, gfx::Transform()); | 1248 render_passes, root_pass_id, viewport_rect, gfx::Transform()); |
1247 | 1249 |
1248 AddRenderPassQuad(root_pass, | 1250 AddRenderPassQuad(root_pass, |
1249 child_pass, | 1251 child_pass, |
1250 0, | 1252 0, |
1251 skia::RefPtr<SkImageFilter>(), | 1253 FilterOperations(), |
1252 gfx::Transform()); | 1254 gfx::Transform()); |
1253 | 1255 |
1254 renderer_->DecideRenderPassAllocationsForFrame( | 1256 renderer_->DecideRenderPassAllocationsForFrame( |
1255 *renderer_client_.render_passes_in_draw_order()); | 1257 *renderer_client_.render_passes_in_draw_order()); |
1256 renderer_->DrawFrame( | 1258 renderer_->DrawFrame( |
1257 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); | 1259 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); |
1258 TestRenderPassProgram(); | 1260 TestRenderPassProgram(); |
1259 | 1261 |
1260 // RenderPassColorMatrixProgram | 1262 // RenderPassColorMatrixProgram |
1261 render_passes->clear(); | 1263 render_passes->clear(); |
1262 | 1264 |
1263 child_pass = AddRenderPass( | 1265 child_pass = AddRenderPass( |
1264 render_passes, child_pass_id, child_rect, transform_causing_aa); | 1266 render_passes, child_pass_id, child_rect, transform_causing_aa); |
1265 | 1267 |
1266 root_pass = AddRenderPass( | 1268 root_pass = AddRenderPass( |
1267 render_passes, root_pass_id, viewport_rect, gfx::Transform()); | 1269 render_passes, root_pass_id, viewport_rect, gfx::Transform()); |
1268 | 1270 |
1269 AddRenderPassQuad(root_pass, child_pass, 0, filter, gfx::Transform()); | 1271 AddRenderPassQuad(root_pass, child_pass, 0, filters, gfx::Transform()); |
1270 | 1272 |
1271 renderer_->DecideRenderPassAllocationsForFrame( | 1273 renderer_->DecideRenderPassAllocationsForFrame( |
1272 *renderer_client_.render_passes_in_draw_order()); | 1274 *renderer_client_.render_passes_in_draw_order()); |
1273 renderer_->DrawFrame( | 1275 renderer_->DrawFrame( |
1274 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); | 1276 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); |
1275 TestRenderPassColorMatrixProgram(); | 1277 TestRenderPassColorMatrixProgram(); |
1276 | 1278 |
1277 // RenderPassMaskProgram | 1279 // RenderPassMaskProgram |
1278 render_passes->clear(); | 1280 render_passes->clear(); |
1279 | 1281 |
1280 child_pass = AddRenderPass( | 1282 child_pass = AddRenderPass( |
1281 render_passes, child_pass_id, child_rect, gfx::Transform()); | 1283 render_passes, child_pass_id, child_rect, gfx::Transform()); |
1282 | 1284 |
1283 root_pass = AddRenderPass( | 1285 root_pass = AddRenderPass( |
1284 render_passes, root_pass_id, viewport_rect, gfx::Transform()); | 1286 render_passes, root_pass_id, viewport_rect, gfx::Transform()); |
1285 | 1287 |
1286 AddRenderPassQuad(root_pass, | 1288 AddRenderPassQuad(root_pass, |
1287 child_pass, | 1289 child_pass, |
1288 mask, | 1290 mask, |
1289 skia::RefPtr<SkImageFilter>(), | 1291 FilterOperations(), |
1290 gfx::Transform()); | 1292 gfx::Transform()); |
1291 | 1293 |
1292 renderer_->DecideRenderPassAllocationsForFrame( | 1294 renderer_->DecideRenderPassAllocationsForFrame( |
1293 *renderer_client_.render_passes_in_draw_order()); | 1295 *renderer_client_.render_passes_in_draw_order()); |
1294 renderer_->DrawFrame( | 1296 renderer_->DrawFrame( |
1295 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); | 1297 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); |
1296 TestRenderPassMaskProgram(); | 1298 TestRenderPassMaskProgram(); |
1297 | 1299 |
1298 // RenderPassMaskColorMatrixProgram | 1300 // RenderPassMaskColorMatrixProgram |
1299 render_passes->clear(); | 1301 render_passes->clear(); |
1300 | 1302 |
1301 child_pass = AddRenderPass( | 1303 child_pass = AddRenderPass( |
1302 render_passes, child_pass_id, child_rect, gfx::Transform()); | 1304 render_passes, child_pass_id, child_rect, gfx::Transform()); |
1303 | 1305 |
1304 root_pass = AddRenderPass( | 1306 root_pass = AddRenderPass( |
1305 render_passes, root_pass_id, viewport_rect, gfx::Transform()); | 1307 render_passes, root_pass_id, viewport_rect, gfx::Transform()); |
1306 | 1308 |
1307 AddRenderPassQuad(root_pass, child_pass, mask, filter, gfx::Transform()); | 1309 AddRenderPassQuad(root_pass, child_pass, mask, filters, gfx::Transform()); |
1308 | 1310 |
1309 renderer_->DecideRenderPassAllocationsForFrame( | 1311 renderer_->DecideRenderPassAllocationsForFrame( |
1310 *renderer_client_.render_passes_in_draw_order()); | 1312 *renderer_client_.render_passes_in_draw_order()); |
1311 renderer_->DrawFrame( | 1313 renderer_->DrawFrame( |
1312 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); | 1314 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); |
1313 TestRenderPassMaskColorMatrixProgram(); | 1315 TestRenderPassMaskColorMatrixProgram(); |
1314 | 1316 |
1315 // RenderPassProgramAA | 1317 // RenderPassProgramAA |
1316 render_passes->clear(); | 1318 render_passes->clear(); |
1317 | 1319 |
1318 child_pass = AddRenderPass( | 1320 child_pass = AddRenderPass( |
1319 render_passes, child_pass_id, child_rect, transform_causing_aa); | 1321 render_passes, child_pass_id, child_rect, transform_causing_aa); |
1320 | 1322 |
1321 root_pass = AddRenderPass( | 1323 root_pass = AddRenderPass( |
1322 render_passes, root_pass_id, viewport_rect, gfx::Transform()); | 1324 render_passes, root_pass_id, viewport_rect, gfx::Transform()); |
1323 | 1325 |
1324 AddRenderPassQuad(root_pass, | 1326 AddRenderPassQuad(root_pass, |
1325 child_pass, | 1327 child_pass, |
1326 0, | 1328 0, |
1327 skia::RefPtr<SkImageFilter>(), | 1329 FilterOperations(), |
1328 transform_causing_aa); | 1330 transform_causing_aa); |
1329 | 1331 |
1330 renderer_->DecideRenderPassAllocationsForFrame( | 1332 renderer_->DecideRenderPassAllocationsForFrame( |
1331 *renderer_client_.render_passes_in_draw_order()); | 1333 *renderer_client_.render_passes_in_draw_order()); |
1332 renderer_->DrawFrame( | 1334 renderer_->DrawFrame( |
1333 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); | 1335 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); |
1334 TestRenderPassProgramAA(); | 1336 TestRenderPassProgramAA(); |
1335 | 1337 |
1336 // RenderPassColorMatrixProgramAA | 1338 // RenderPassColorMatrixProgramAA |
1337 render_passes->clear(); | 1339 render_passes->clear(); |
1338 | 1340 |
1339 child_pass = AddRenderPass( | 1341 child_pass = AddRenderPass( |
1340 render_passes, child_pass_id, child_rect, transform_causing_aa); | 1342 render_passes, child_pass_id, child_rect, transform_causing_aa); |
1341 | 1343 |
1342 root_pass = AddRenderPass( | 1344 root_pass = AddRenderPass( |
1343 render_passes, root_pass_id, viewport_rect, gfx::Transform()); | 1345 render_passes, root_pass_id, viewport_rect, gfx::Transform()); |
1344 | 1346 |
1345 AddRenderPassQuad(root_pass, child_pass, 0, filter, transform_causing_aa); | 1347 AddRenderPassQuad(root_pass, child_pass, 0, filters, transform_causing_aa); |
1346 | 1348 |
1347 renderer_->DecideRenderPassAllocationsForFrame( | 1349 renderer_->DecideRenderPassAllocationsForFrame( |
1348 *renderer_client_.render_passes_in_draw_order()); | 1350 *renderer_client_.render_passes_in_draw_order()); |
1349 renderer_->DrawFrame( | 1351 renderer_->DrawFrame( |
1350 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); | 1352 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); |
1351 TestRenderPassColorMatrixProgramAA(); | 1353 TestRenderPassColorMatrixProgramAA(); |
1352 | 1354 |
1353 // RenderPassMaskProgramAA | 1355 // RenderPassMaskProgramAA |
1354 render_passes->clear(); | 1356 render_passes->clear(); |
1355 | 1357 |
1356 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect, | 1358 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect, |
1357 transform_causing_aa); | 1359 transform_causing_aa); |
1358 | 1360 |
1359 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect, | 1361 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect, |
1360 gfx::Transform()); | 1362 gfx::Transform()); |
1361 | 1363 |
1362 AddRenderPassQuad(root_pass, child_pass, mask, skia::RefPtr<SkImageFilter>(), | 1364 AddRenderPassQuad(root_pass, child_pass, mask, FilterOperations(), |
1363 transform_causing_aa); | 1365 transform_causing_aa); |
1364 | 1366 |
1365 renderer_->DecideRenderPassAllocationsForFrame( | 1367 renderer_->DecideRenderPassAllocationsForFrame( |
1366 *renderer_client_.render_passes_in_draw_order()); | 1368 *renderer_client_.render_passes_in_draw_order()); |
1367 renderer_->DrawFrame( | 1369 renderer_->DrawFrame( |
1368 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); | 1370 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); |
1369 TestRenderPassMaskProgramAA(); | 1371 TestRenderPassMaskProgramAA(); |
1370 | 1372 |
1371 // RenderPassMaskColorMatrixProgramAA | 1373 // RenderPassMaskColorMatrixProgramAA |
1372 render_passes->clear(); | 1374 render_passes->clear(); |
1373 | 1375 |
1374 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect, | 1376 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect, |
1375 transform_causing_aa); | 1377 transform_causing_aa); |
1376 | 1378 |
1377 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect, | 1379 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect, |
1378 transform_causing_aa); | 1380 transform_causing_aa); |
1379 | 1381 |
1380 AddRenderPassQuad(root_pass, child_pass, mask, filter, transform_causing_aa); | 1382 AddRenderPassQuad(root_pass, child_pass, mask, filters, transform_causing_aa); |
1381 | 1383 |
1382 renderer_->DecideRenderPassAllocationsForFrame( | 1384 renderer_->DecideRenderPassAllocationsForFrame( |
1383 *renderer_client_.render_passes_in_draw_order()); | 1385 *renderer_client_.render_passes_in_draw_order()); |
1384 renderer_->DrawFrame( | 1386 renderer_->DrawFrame( |
1385 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); | 1387 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); |
1386 TestRenderPassMaskColorMatrixProgramAA(); | 1388 TestRenderPassMaskColorMatrixProgramAA(); |
1387 } | 1389 } |
1388 | 1390 |
1389 // At this time, the AA code path cannot be taken if the surface's rect would | 1391 // At this time, the AA code path cannot be taken if the surface's rect would |
1390 // project incorrectly by the given transform, because of w<0 clipping. | 1392 // project incorrectly by the given transform, because of w<0 clipping. |
(...skipping 27 matching lines...) Expand all Loading... |
1418 | 1420 |
1419 child_pass = AddRenderPass( | 1421 child_pass = AddRenderPass( |
1420 render_passes, child_pass_id, child_rect, transform_preventing_aa); | 1422 render_passes, child_pass_id, child_rect, transform_preventing_aa); |
1421 | 1423 |
1422 root_pass = AddRenderPass( | 1424 root_pass = AddRenderPass( |
1423 render_passes, root_pass_id, viewport_rect, gfx::Transform()); | 1425 render_passes, root_pass_id, viewport_rect, gfx::Transform()); |
1424 | 1426 |
1425 AddRenderPassQuad(root_pass, | 1427 AddRenderPassQuad(root_pass, |
1426 child_pass, | 1428 child_pass, |
1427 0, | 1429 0, |
1428 skia::RefPtr<SkImageFilter>(), | 1430 FilterOperations(), |
1429 transform_preventing_aa); | 1431 transform_preventing_aa); |
1430 | 1432 |
1431 renderer_->DecideRenderPassAllocationsForFrame( | 1433 renderer_->DecideRenderPassAllocationsForFrame( |
1432 *renderer_client_.render_passes_in_draw_order()); | 1434 *renderer_client_.render_passes_in_draw_order()); |
1433 renderer_->DrawFrame( | 1435 renderer_->DrawFrame( |
1434 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); | 1436 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); |
1435 | 1437 |
1436 // If use_aa incorrectly ignores clipping, it will use the | 1438 // If use_aa incorrectly ignores clipping, it will use the |
1437 // RenderPassProgramAA shader instead of the RenderPassProgram. | 1439 // RenderPassProgramAA shader instead of the RenderPassProgram. |
1438 TestRenderPassProgram(); | 1440 TestRenderPassProgram(); |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1658 base::MessageLoop::current()->Run(); | 1660 base::MessageLoop::current()->Run(); |
1659 | 1661 |
1660 // The sync point should have happened. | 1662 // The sync point should have happened. |
1661 EXPECT_EQ(1, sync_point_callback_count); | 1663 EXPECT_EQ(1, sync_point_callback_count); |
1662 EXPECT_EQ(1, other_callback_count); | 1664 EXPECT_EQ(1, other_callback_count); |
1663 } | 1665 } |
1664 #endif // OS_ANDROID | 1666 #endif // OS_ANDROID |
1665 | 1667 |
1666 } // namespace | 1668 } // namespace |
1667 } // namespace cc | 1669 } // namespace cc |
OLD | NEW |