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

Side by Side Diff: third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp

Issue 2625873005: Add an heuristic for promoting canvases to GPU acceleration (Closed)
Patch Set: webgl test fix Created 3 years, 11 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
OLDNEW
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 989 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 EXPECT_TRUE(canvasElement().buffer()->isAccelerated()); 1000 EXPECT_TRUE(canvasElement().buffer()->isAccelerated());
1001 EXPECT_EQ(1u, getGlobalAcceleratedImageBufferCount()); 1001 EXPECT_EQ(1u, getGlobalAcceleratedImageBufferCount());
1002 EXPECT_EQ(720000, getGlobalGPUMemoryUsage()); 1002 EXPECT_EQ(720000, getGlobalGPUMemoryUsage());
1003 } 1003 }
1004 1004
1005 // Restore global state to prevent side-effects on other tests 1005 // Restore global state to prevent side-effects on other tests
1006 RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled( 1006 RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled(
1007 savedFixedRenderingMode); 1007 savedFixedRenderingMode);
1008 } 1008 }
1009 1009
1010 TEST_F(CanvasRenderingContext2DTest,
1011 PreferNoAccelerationHintDisablesAcceleration) {
1012 bool savedFixedRenderingMode =
1013 RuntimeEnabledFeatures::canvas2dFixedRenderingModeEnabled();
1014 RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled(false);
1015
1016 createContext(NonOpaque);
1017 FakeGLES2Interface gl;
1018 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider(
1019 new FakeWebGraphicsContext3DProvider(&gl));
1020 IntSize size(300, 300);
1021 RefPtr<Canvas2DLayerBridge> bridge =
1022 makeBridge(std::move(contextProvider), size,
1023 Canvas2DLayerBridge::EnableAcceleration);
1024 std::unique_ptr<Canvas2DImageBufferSurface> surface(
1025 new Canvas2DImageBufferSurface(bridge, size));
1026 canvasElement().createImageBufferUsingSurfaceForTesting(std::move(surface));
1027
1028 EXPECT_TRUE(canvasElement().buffer()->isAccelerated());
1029 SourceImageStatus status = InvalidSourceImageStatus;
1030 canvasElement().getSourceImageForCanvas(
1031 &status, PreferNoAcceleration, SnapshotReasonUnitTests, FloatSize(size));
1032 EXPECT_EQ(NormalSourceImageStatus, status);
1033 if (ExpensiveCanvasHeuristicParameters::DisableAccelerationToAvoidReadbacks) {
1034 EXPECT_FALSE(canvasElement().buffer()->isAccelerated());
1035 EXPECT_EQ(0u, getGlobalAcceleratedImageBufferCount());
1036 EXPECT_EQ(0, getGlobalGPUMemoryUsage());
1037 } else {
1038 EXPECT_TRUE(canvasElement().buffer()->isAccelerated());
1039 EXPECT_EQ(1u, getGlobalAcceleratedImageBufferCount());
1040 EXPECT_EQ(720000, getGlobalGPUMemoryUsage());
1041 }
1042
1043 // Restore global state to prevent side-effects on other tests
1044 RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled(
1045 savedFixedRenderingMode);
1046 }
1047
1048 TEST_F(CanvasRenderingContext2DTest, TextureUploadHeuristics) { 1010 TEST_F(CanvasRenderingContext2DTest, TextureUploadHeuristics) {
1049 bool savedFixedRenderingMode = 1011 bool savedFixedRenderingMode =
1050 RuntimeEnabledFeatures::canvas2dFixedRenderingModeEnabled(); 1012 RuntimeEnabledFeatures::canvas2dFixedRenderingModeEnabled();
1051 RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled(false); 1013 RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled(false);
1052 1014
1053 enum TestVariants { 1015 enum TestVariants {
1054 LargeTextureDisablesAcceleration = 0, 1016 LargeTextureDisablesAcceleration = 0,
1055 SmallTextureDoesNotDisableAcceleration = 1, 1017 SmallTextureDoesNotDisableAcceleration = 1,
1056 1018
1057 TestVariantCount = 2, 1019 TestVariantCount = 2,
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
1403 1365
1404 RuntimeEnabledFeatures::setExperimentalCanvasFeaturesEnabled( 1366 RuntimeEnabledFeatures::setExperimentalCanvasFeaturesEnabled(
1405 experimentalCanvasFeaturesRuntimeFlag); 1367 experimentalCanvasFeaturesRuntimeFlag);
1406 RuntimeEnabledFeatures::setColorCorrectRenderingEnabled( 1368 RuntimeEnabledFeatures::setColorCorrectRenderingEnabled(
1407 colorCorrectRenderingRuntimeFlag); 1369 colorCorrectRenderingRuntimeFlag);
1408 RuntimeEnabledFeatures::setColorCorrectRenderingDefaultModeEnabled( 1370 RuntimeEnabledFeatures::setColorCorrectRenderingDefaultModeEnabled(
1409 colorCorrectRenderingDefaultModeRuntimeFlag); 1371 colorCorrectRenderingDefaultModeRuntimeFlag);
1410 } 1372 }
1411 1373
1412 } // namespace blink 1374 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698