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

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 cc_messages 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 1191 matching lines...) Expand 10 before | Expand all | Expand 10 after
1202 matrix[10] = 0.213f - 0.213f * amount; 1202 matrix[10] = 0.213f - 0.213f * amount;
1203 matrix[11] = 0.715f - 0.715f * amount; 1203 matrix[11] = 0.715f - 0.715f * amount;
1204 matrix[12] = 1.f - (matrix[10] + matrix[11]); 1204 matrix[12] = 1.f - (matrix[10] + matrix[11]);
1205 matrix[13] = matrix[14] = 0; 1205 matrix[13] = matrix[14] = 0;
1206 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0; 1206 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0;
1207 matrix[18] = 1; 1207 matrix[18] = 1;
1208 skia::RefPtr<SkColorFilter> color_filter( 1208 skia::RefPtr<SkColorFilter> color_filter(
1209 skia::AdoptRef(new SkColorMatrixFilter(matrix))); 1209 skia::AdoptRef(new SkColorMatrixFilter(matrix)));
1210 skia::RefPtr<SkImageFilter> filter = skia::AdoptRef( 1210 skia::RefPtr<SkImageFilter> filter = skia::AdoptRef(
1211 SkColorFilterImageFilter::Create(color_filter.get(), NULL)); 1211 SkColorFilterImageFilter::Create(color_filter.get(), NULL));
1212 FilterOperations filters;
1213 filters.Append(FilterOperation::CreateReferenceFilter(filter));
1212 1214
1213 gfx::Transform transform_causing_aa; 1215 gfx::Transform transform_causing_aa;
1214 transform_causing_aa.Rotate(20.0); 1216 transform_causing_aa.Rotate(20.0);
1215 1217
1216 // RenderPassProgram 1218 // RenderPassProgram
1217 render_passes->clear(); 1219 render_passes->clear();
1218 1220
1219 child_pass = AddRenderPass( 1221 child_pass = AddRenderPass(
1220 render_passes, child_pass_id, child_rect, gfx::Transform()); 1222 render_passes, child_pass_id, child_rect, gfx::Transform());
1221 1223
1222 root_pass = AddRenderPass( 1224 root_pass = AddRenderPass(
1223 render_passes, root_pass_id, viewport_rect, gfx::Transform()); 1225 render_passes, root_pass_id, viewport_rect, gfx::Transform());
1224 1226
1225 AddRenderPassQuad(root_pass, 1227 AddRenderPassQuad(root_pass,
1226 child_pass, 1228 child_pass,
1227 0, 1229 0,
1228 skia::RefPtr<SkImageFilter>(), 1230 FilterOperations(),
1229 gfx::Transform()); 1231 gfx::Transform());
1230 1232
1231 renderer_->DecideRenderPassAllocationsForFrame( 1233 renderer_->DecideRenderPassAllocationsForFrame(
1232 *renderer_client_.render_passes_in_draw_order()); 1234 *renderer_client_.render_passes_in_draw_order());
1233 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL); 1235 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL);
1234 TestRenderPassProgram(); 1236 TestRenderPassProgram();
1235 1237
1236 // RenderPassColorMatrixProgram 1238 // RenderPassColorMatrixProgram
1237 render_passes->clear(); 1239 render_passes->clear();
1238 1240
1239 child_pass = AddRenderPass( 1241 child_pass = AddRenderPass(
1240 render_passes, child_pass_id, child_rect, transform_causing_aa); 1242 render_passes, child_pass_id, child_rect, transform_causing_aa);
1241 1243
1242 root_pass = AddRenderPass( 1244 root_pass = AddRenderPass(
1243 render_passes, root_pass_id, viewport_rect, gfx::Transform()); 1245 render_passes, root_pass_id, viewport_rect, gfx::Transform());
1244 1246
1245 AddRenderPassQuad(root_pass, child_pass, 0, filter, gfx::Transform()); 1247 AddRenderPassQuad(root_pass, child_pass, 0, filters, gfx::Transform());
1246 1248
1247 renderer_->DecideRenderPassAllocationsForFrame( 1249 renderer_->DecideRenderPassAllocationsForFrame(
1248 *renderer_client_.render_passes_in_draw_order()); 1250 *renderer_client_.render_passes_in_draw_order());
1249 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL); 1251 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL);
1250 TestRenderPassColorMatrixProgram(); 1252 TestRenderPassColorMatrixProgram();
1251 1253
1252 // RenderPassMaskProgram 1254 // RenderPassMaskProgram
1253 render_passes->clear(); 1255 render_passes->clear();
1254 1256
1255 child_pass = AddRenderPass( 1257 child_pass = AddRenderPass(
1256 render_passes, child_pass_id, child_rect, gfx::Transform()); 1258 render_passes, child_pass_id, child_rect, gfx::Transform());
1257 1259
1258 root_pass = AddRenderPass( 1260 root_pass = AddRenderPass(
1259 render_passes, root_pass_id, viewport_rect, gfx::Transform()); 1261 render_passes, root_pass_id, viewport_rect, gfx::Transform());
1260 1262
1261 AddRenderPassQuad(root_pass, 1263 AddRenderPassQuad(root_pass,
1262 child_pass, 1264 child_pass,
1263 mask, 1265 mask,
1264 skia::RefPtr<SkImageFilter>(), 1266 FilterOperations(),
1265 gfx::Transform()); 1267 gfx::Transform());
1266 1268
1267 renderer_->DecideRenderPassAllocationsForFrame( 1269 renderer_->DecideRenderPassAllocationsForFrame(
1268 *renderer_client_.render_passes_in_draw_order()); 1270 *renderer_client_.render_passes_in_draw_order());
1269 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL); 1271 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL);
1270 TestRenderPassMaskProgram(); 1272 TestRenderPassMaskProgram();
1271 1273
1272 // RenderPassMaskColorMatrixProgram 1274 // RenderPassMaskColorMatrixProgram
1273 render_passes->clear(); 1275 render_passes->clear();
1274 1276
1275 child_pass = AddRenderPass( 1277 child_pass = AddRenderPass(
1276 render_passes, child_pass_id, child_rect, gfx::Transform()); 1278 render_passes, child_pass_id, child_rect, gfx::Transform());
1277 1279
1278 root_pass = AddRenderPass( 1280 root_pass = AddRenderPass(
1279 render_passes, root_pass_id, viewport_rect, gfx::Transform()); 1281 render_passes, root_pass_id, viewport_rect, gfx::Transform());
1280 1282
1281 AddRenderPassQuad(root_pass, child_pass, mask, filter, gfx::Transform()); 1283 AddRenderPassQuad(root_pass, child_pass, mask, filters, gfx::Transform());
1282 1284
1283 renderer_->DecideRenderPassAllocationsForFrame( 1285 renderer_->DecideRenderPassAllocationsForFrame(
1284 *renderer_client_.render_passes_in_draw_order()); 1286 *renderer_client_.render_passes_in_draw_order());
1285 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL); 1287 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL);
1286 TestRenderPassMaskColorMatrixProgram(); 1288 TestRenderPassMaskColorMatrixProgram();
1287 1289
1288 // RenderPassProgramAA 1290 // RenderPassProgramAA
1289 render_passes->clear(); 1291 render_passes->clear();
1290 1292
1291 child_pass = AddRenderPass( 1293 child_pass = AddRenderPass(
1292 render_passes, child_pass_id, child_rect, transform_causing_aa); 1294 render_passes, child_pass_id, child_rect, transform_causing_aa);
1293 1295
1294 root_pass = AddRenderPass( 1296 root_pass = AddRenderPass(
1295 render_passes, root_pass_id, viewport_rect, gfx::Transform()); 1297 render_passes, root_pass_id, viewport_rect, gfx::Transform());
1296 1298
1297 AddRenderPassQuad(root_pass, 1299 AddRenderPassQuad(root_pass,
1298 child_pass, 1300 child_pass,
1299 0, 1301 0,
1300 skia::RefPtr<SkImageFilter>(), 1302 FilterOperations(),
1301 transform_causing_aa); 1303 transform_causing_aa);
1302 1304
1303 renderer_->DecideRenderPassAllocationsForFrame( 1305 renderer_->DecideRenderPassAllocationsForFrame(
1304 *renderer_client_.render_passes_in_draw_order()); 1306 *renderer_client_.render_passes_in_draw_order());
1305 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL); 1307 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL);
1306 TestRenderPassProgramAA(); 1308 TestRenderPassProgramAA();
1307 1309
1308 // RenderPassColorMatrixProgramAA 1310 // RenderPassColorMatrixProgramAA
1309 render_passes->clear(); 1311 render_passes->clear();
1310 1312
1311 child_pass = AddRenderPass( 1313 child_pass = AddRenderPass(
1312 render_passes, child_pass_id, child_rect, transform_causing_aa); 1314 render_passes, child_pass_id, child_rect, transform_causing_aa);
1313 1315
1314 root_pass = AddRenderPass( 1316 root_pass = AddRenderPass(
1315 render_passes, root_pass_id, viewport_rect, gfx::Transform()); 1317 render_passes, root_pass_id, viewport_rect, gfx::Transform());
1316 1318
1317 AddRenderPassQuad(root_pass, child_pass, 0, filter, transform_causing_aa); 1319 AddRenderPassQuad(root_pass, child_pass, 0, filters, transform_causing_aa);
1318 1320
1319 renderer_->DecideRenderPassAllocationsForFrame( 1321 renderer_->DecideRenderPassAllocationsForFrame(
1320 *renderer_client_.render_passes_in_draw_order()); 1322 *renderer_client_.render_passes_in_draw_order());
1321 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL); 1323 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL);
1322 TestRenderPassColorMatrixProgramAA(); 1324 TestRenderPassColorMatrixProgramAA();
1323 1325
1324 // RenderPassMaskProgramAA 1326 // RenderPassMaskProgramAA
1325 render_passes->clear(); 1327 render_passes->clear();
1326 1328
1327 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect, 1329 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect,
1328 transform_causing_aa); 1330 transform_causing_aa);
1329 1331
1330 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect, 1332 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect,
1331 gfx::Transform()); 1333 gfx::Transform());
1332 1334
1333 AddRenderPassQuad(root_pass, child_pass, mask, skia::RefPtr<SkImageFilter>(), 1335 AddRenderPassQuad(root_pass, child_pass, mask, FilterOperations(),
1334 transform_causing_aa); 1336 transform_causing_aa);
1335 1337
1336 renderer_->DecideRenderPassAllocationsForFrame( 1338 renderer_->DecideRenderPassAllocationsForFrame(
1337 *renderer_client_.render_passes_in_draw_order()); 1339 *renderer_client_.render_passes_in_draw_order());
1338 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL); 1340 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL);
1339 TestRenderPassMaskProgramAA(); 1341 TestRenderPassMaskProgramAA();
1340 1342
1341 // RenderPassMaskColorMatrixProgramAA 1343 // RenderPassMaskColorMatrixProgramAA
1342 render_passes->clear(); 1344 render_passes->clear();
1343 1345
1344 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect, 1346 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect,
1345 transform_causing_aa); 1347 transform_causing_aa);
1346 1348
1347 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect, 1349 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect,
1348 transform_causing_aa); 1350 transform_causing_aa);
1349 1351
1350 AddRenderPassQuad(root_pass, child_pass, mask, filter, transform_causing_aa); 1352 AddRenderPassQuad(root_pass, child_pass, mask, filters, transform_causing_aa);
1351 1353
1352 renderer_->DecideRenderPassAllocationsForFrame( 1354 renderer_->DecideRenderPassAllocationsForFrame(
1353 *renderer_client_.render_passes_in_draw_order()); 1355 *renderer_client_.render_passes_in_draw_order());
1354 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL); 1356 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL);
1355 TestRenderPassMaskColorMatrixProgramAA(); 1357 TestRenderPassMaskColorMatrixProgramAA();
1356 } 1358 }
1357 1359
1358 // At this time, the AA code path cannot be taken if the surface's rect would 1360 // At this time, the AA code path cannot be taken if the surface's rect would
1359 // project incorrectly by the given transform, because of w<0 clipping. 1361 // project incorrectly by the given transform, because of w<0 clipping.
1360 TEST_F(GLRendererShaderTest, DrawRenderPassQuadSkipsAAForClippingTransform) { 1362 TEST_F(GLRendererShaderTest, DrawRenderPassQuadSkipsAAForClippingTransform) {
(...skipping 26 matching lines...) Expand all
1387 1389
1388 child_pass = AddRenderPass( 1390 child_pass = AddRenderPass(
1389 render_passes, child_pass_id, child_rect, transform_preventing_aa); 1391 render_passes, child_pass_id, child_rect, transform_preventing_aa);
1390 1392
1391 root_pass = AddRenderPass( 1393 root_pass = AddRenderPass(
1392 render_passes, root_pass_id, viewport_rect, gfx::Transform()); 1394 render_passes, root_pass_id, viewport_rect, gfx::Transform());
1393 1395
1394 AddRenderPassQuad(root_pass, 1396 AddRenderPassQuad(root_pass,
1395 child_pass, 1397 child_pass,
1396 0, 1398 0,
1397 skia::RefPtr<SkImageFilter>(), 1399 FilterOperations(),
1398 transform_preventing_aa); 1400 transform_preventing_aa);
1399 1401
1400 renderer_->DecideRenderPassAllocationsForFrame( 1402 renderer_->DecideRenderPassAllocationsForFrame(
1401 *renderer_client_.render_passes_in_draw_order()); 1403 *renderer_client_.render_passes_in_draw_order());
1402 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL); 1404 renderer_->DrawFrame(renderer_client_.render_passes_in_draw_order(), NULL);
1403 1405
1404 // If use_aa incorrectly ignores clipping, it will use the 1406 // If use_aa incorrectly ignores clipping, it will use the
1405 // RenderPassProgramAA shader instead of the RenderPassProgram. 1407 // RenderPassProgramAA shader instead of the RenderPassProgram.
1406 TestRenderPassProgram(); 1408 TestRenderPassProgram();
1407 } 1409 }
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
1624 base::MessageLoop::current()->Run(); 1626 base::MessageLoop::current()->Run();
1625 1627
1626 // The sync point should have happened. 1628 // The sync point should have happened.
1627 EXPECT_EQ(1, sync_point_callback_count); 1629 EXPECT_EQ(1, sync_point_callback_count);
1628 EXPECT_EQ(1, other_callback_count); 1630 EXPECT_EQ(1, other_callback_count);
1629 } 1631 }
1630 #endif // OS_ANDROID 1632 #endif // OS_ANDROID
1631 1633
1632 } // namespace 1634 } // namespace
1633 } // namespace cc 1635 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698