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 1191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |