OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "modules/canvas2d/CanvasRenderingContext2D.h" | 5 #include "modules/canvas2d/CanvasRenderingContext2D.h" |
6 | 6 |
7 #include "core/dom/Document.h" | 7 #include "core/dom/Document.h" |
8 #include "core/fetch/MemoryCache.h" | 8 #include "core/fetch/MemoryCache.h" |
9 #include "core/frame/FrameView.h" | 9 #include "core/frame/FrameView.h" |
10 #include "core/frame/ImageBitmap.h" | 10 #include "core/frame/ImageBitmap.h" |
(...skipping 979 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
990 EXPECT_TRUE(canvasElement().buffer()->isAccelerated()); | 990 EXPECT_TRUE(canvasElement().buffer()->isAccelerated()); |
991 EXPECT_EQ(1u, getGlobalAcceleratedImageBufferCount()); | 991 EXPECT_EQ(1u, getGlobalAcceleratedImageBufferCount()); |
992 EXPECT_EQ(720000, getGlobalGPUMemoryUsage()); | 992 EXPECT_EQ(720000, getGlobalGPUMemoryUsage()); |
993 } | 993 } |
994 | 994 |
995 // Restore global state to prevent side-effects on other tests | 995 // Restore global state to prevent side-effects on other tests |
996 RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled( | 996 RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled( |
997 savedFixedRenderingMode); | 997 savedFixedRenderingMode); |
998 } | 998 } |
999 | 999 |
| 1000 TEST_F(CanvasRenderingContext2DTest, |
| 1001 PreferNoAccelerationHintDisablesAcceleration) { |
| 1002 bool savedFixedRenderingMode = |
| 1003 RuntimeEnabledFeatures::canvas2dFixedRenderingModeEnabled(); |
| 1004 RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled(false); |
| 1005 |
| 1006 createContext(NonOpaque); |
| 1007 FakeGLES2Interface gl; |
| 1008 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider( |
| 1009 new FakeWebGraphicsContext3DProvider(&gl)); |
| 1010 IntSize size(300, 300); |
| 1011 RefPtr<Canvas2DLayerBridge> bridge = |
| 1012 makeBridge(std::move(contextProvider), size, |
| 1013 Canvas2DLayerBridge::EnableAcceleration); |
| 1014 std::unique_ptr<Canvas2DImageBufferSurface> surface( |
| 1015 new Canvas2DImageBufferSurface(bridge, size)); |
| 1016 canvasElement().createImageBufferUsingSurfaceForTesting(std::move(surface)); |
| 1017 |
| 1018 EXPECT_TRUE(canvasElement().buffer()->isAccelerated()); |
| 1019 SourceImageStatus status = InvalidSourceImageStatus; |
| 1020 canvasElement().getSourceImageForCanvas( |
| 1021 &status, PreferNoAcceleration, SnapshotReasonUnitTests, FloatSize(size)); |
| 1022 EXPECT_EQ(NormalSourceImageStatus, status); |
| 1023 if (ExpensiveCanvasHeuristicParameters::DisableAccelerationToAvoidReadbacks) { |
| 1024 EXPECT_FALSE(canvasElement().buffer()->isAccelerated()); |
| 1025 EXPECT_EQ(0u, getGlobalAcceleratedImageBufferCount()); |
| 1026 EXPECT_EQ(0, getGlobalGPUMemoryUsage()); |
| 1027 } else { |
| 1028 EXPECT_TRUE(canvasElement().buffer()->isAccelerated()); |
| 1029 EXPECT_EQ(1u, getGlobalAcceleratedImageBufferCount()); |
| 1030 EXPECT_EQ(720000, getGlobalGPUMemoryUsage()); |
| 1031 } |
| 1032 |
| 1033 // Restore global state to prevent side-effects on other tests |
| 1034 RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled( |
| 1035 savedFixedRenderingMode); |
| 1036 } |
| 1037 |
1000 TEST_F(CanvasRenderingContext2DTest, TextureUploadHeuristics) { | 1038 TEST_F(CanvasRenderingContext2DTest, TextureUploadHeuristics) { |
1001 bool savedFixedRenderingMode = | 1039 bool savedFixedRenderingMode = |
1002 RuntimeEnabledFeatures::canvas2dFixedRenderingModeEnabled(); | 1040 RuntimeEnabledFeatures::canvas2dFixedRenderingModeEnabled(); |
1003 RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled(false); | 1041 RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled(false); |
1004 | 1042 |
1005 enum TestVariants { | 1043 enum TestVariants { |
1006 LargeTextureDisablesAcceleration = 0, | 1044 LargeTextureDisablesAcceleration = 0, |
1007 SmallTextureDoesNotDisableAcceleration = 1, | 1045 SmallTextureDoesNotDisableAcceleration = 1, |
1008 | 1046 |
1009 TestVariantCount = 2, | 1047 TestVariantCount = 2, |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1122 EXPECT_FALSE(canvasElement().buffer()->isAccelerated()); | 1160 EXPECT_FALSE(canvasElement().buffer()->isAccelerated()); |
1123 | 1161 |
1124 context->fillRect(10, 10, 100, 100); | 1162 context->fillRect(10, 10, 100, 100); |
1125 | 1163 |
1126 EXPECT_EQ(0, getCurrentGPUMemoryUsage()); | 1164 EXPECT_EQ(0, getCurrentGPUMemoryUsage()); |
1127 EXPECT_EQ(0, getGlobalGPUMemoryUsage()); | 1165 EXPECT_EQ(0, getGlobalGPUMemoryUsage()); |
1128 EXPECT_EQ(0u, getGlobalAcceleratedImageBufferCount()); | 1166 EXPECT_EQ(0u, getGlobalAcceleratedImageBufferCount()); |
1129 } | 1167 } |
1130 | 1168 |
1131 } // namespace blink | 1169 } // namespace blink |
OLD | NEW |