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

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

Issue 21154002: Add support for converting cc::FilterOperations into an SkImageFilter (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nit Created 7 years, 3 months 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
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/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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698