| 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 |