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

Unified Diff: third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp

Issue 2388293002: Disable GPU acceleration on 2D canvas when readbacks are needed (Closed)
Patch Set: fixed tests Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp
diff --git a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp
index 46c5589c0a0f256470319735491dafe6d7f78414..e010aab026d49d65f65377c44e3572c72359cb39 100644
--- a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp
+++ b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DTest.cpp
@@ -997,6 +997,44 @@ TEST_F(CanvasRenderingContext2DTest, GetImageDataDisablesAcceleration) {
savedFixedRenderingMode);
}
+TEST_F(CanvasRenderingContext2DTest,
+ PreferNoAccelerationHintDisablesAcceleration) {
+ bool savedFixedRenderingMode =
+ RuntimeEnabledFeatures::canvas2dFixedRenderingModeEnabled();
+ RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled(false);
+
+ createContext(NonOpaque);
+ FakeGLES2Interface gl;
+ std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider(
+ new FakeWebGraphicsContext3DProvider(&gl));
+ IntSize size(300, 300);
+ RefPtr<Canvas2DLayerBridge> bridge =
+ makeBridge(std::move(contextProvider), size,
+ Canvas2DLayerBridge::EnableAcceleration);
+ std::unique_ptr<Canvas2DImageBufferSurface> surface(
+ new Canvas2DImageBufferSurface(bridge, size));
+ canvasElement().createImageBufferUsingSurfaceForTesting(std::move(surface));
+
+ EXPECT_TRUE(canvasElement().buffer()->isAccelerated());
+ SourceImageStatus status = InvalidSourceImageStatus;
+ canvasElement().getSourceImageForCanvas(
+ &status, PreferNoAcceleration, SnapshotReasonUnitTests, FloatSize(size));
+ EXPECT_EQ(NormalSourceImageStatus, status);
+ if (ExpensiveCanvasHeuristicParameters::DisableAccelerationToAvoidReadbacks) {
+ EXPECT_FALSE(canvasElement().buffer()->isAccelerated());
+ EXPECT_EQ(0u, getGlobalAcceleratedImageBufferCount());
+ EXPECT_EQ(0, getGlobalGPUMemoryUsage());
+ } else {
+ EXPECT_TRUE(canvasElement().buffer()->isAccelerated());
+ EXPECT_EQ(1u, getGlobalAcceleratedImageBufferCount());
+ EXPECT_EQ(720000, getGlobalGPUMemoryUsage());
+ }
+
+ // Restore global state to prevent side-effects on other tests
+ RuntimeEnabledFeatures::setCanvas2dFixedRenderingModeEnabled(
+ savedFixedRenderingMode);
+}
+
TEST_F(CanvasRenderingContext2DTest, TextureUploadHeuristics) {
bool savedFixedRenderingMode =
RuntimeEnabledFeatures::canvas2dFixedRenderingModeEnabled();

Powered by Google App Engine
This is Rietveld 408576698