| 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/fetch/MemoryCache.h" | 7 #include "core/fetch/MemoryCache.h" |
| 8 #include "core/frame/FrameView.h" | 8 #include "core/frame/FrameView.h" |
| 9 #include "core/frame/ImageBitmap.h" | 9 #include "core/frame/ImageBitmap.h" |
| 10 #include "core/html/HTMLCanvasElement.h" | 10 #include "core/html/HTMLCanvasElement.h" |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 class CanvasRenderingContext2DTest : public ::testing::Test { | 73 class CanvasRenderingContext2DTest : public ::testing::Test { |
| 74 protected: | 74 protected: |
| 75 CanvasRenderingContext2DTest(); | 75 CanvasRenderingContext2DTest(); |
| 76 void SetUp() override; | 76 void SetUp() override; |
| 77 | 77 |
| 78 DummyPageHolder& page() const { return *m_dummyPageHolder; } | 78 DummyPageHolder& page() const { return *m_dummyPageHolder; } |
| 79 HTMLDocument& document() const { return *m_document; } | 79 HTMLDocument& document() const { return *m_document; } |
| 80 HTMLCanvasElement& canvasElement() const { return *m_canvasElement; } | 80 HTMLCanvasElement& canvasElement() const { return *m_canvasElement; } |
| 81 CanvasRenderingContext2D* context2d() const { return static_cast<CanvasRende
ringContext2D*>(canvasElement().renderingContext()); } | 81 CanvasRenderingContext2D* context2d() const { return static_cast<CanvasRende
ringContext2D*>(canvasElement().renderingContext()); } |
| 82 intptr_t getGlobalGPUMemoryUsage() const { return ImageBuffer::getGlobalGPUM
emoryUsage(); } | 82 intptr_t getGlobalGPUMemoryUsage() const { return ImageBuffer::getGlobalGPUM
emoryUsage(); } |
| 83 unsigned getGlobalAcceleratedImageBufferCount() const { return ImageBuffer::
getGlobalAcceleratedImageBufferCount(); } |
| 83 intptr_t getCurrentGPUMemoryUsage() const { return canvasElement().buffer()-
>getGPUMemoryUsage(); } | 84 intptr_t getCurrentGPUMemoryUsage() const { return canvasElement().buffer()-
>getGPUMemoryUsage(); } |
| 84 | 85 |
| 85 void createContext(OpacityMode); | 86 void createContext(OpacityMode); |
| 86 void TearDown(); | 87 void TearDown(); |
| 87 | 88 |
| 88 private: | 89 private: |
| 89 OwnPtr<DummyPageHolder> m_dummyPageHolder; | 90 OwnPtr<DummyPageHolder> m_dummyPageHolder; |
| 90 Persistent<HTMLDocument> m_document; | 91 Persistent<HTMLDocument> m_document; |
| 91 Persistent<HTMLCanvasElement> m_canvasElement; | 92 Persistent<HTMLCanvasElement> m_canvasElement; |
| 92 Persistent<MemoryCache> m_globalMemoryCache; | 93 Persistent<MemoryCache> m_globalMemoryCache; |
| (...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 683 { | 684 { |
| 684 createContext(NonOpaque); | 685 createContext(NonOpaque); |
| 685 | 686 |
| 686 OwnPtr<FakeAcceleratedImageBufferSurfaceForTesting> fakeAccelerateSurface =
adoptPtr(new FakeAcceleratedImageBufferSurfaceForTesting(IntSize(10, 10), NonOpa
que)); | 687 OwnPtr<FakeAcceleratedImageBufferSurfaceForTesting> fakeAccelerateSurface =
adoptPtr(new FakeAcceleratedImageBufferSurfaceForTesting(IntSize(10, 10), NonOpa
que)); |
| 687 FakeAcceleratedImageBufferSurfaceForTesting* fakeAccelerateSurfacePtr = fake
AccelerateSurface.get(); | 688 FakeAcceleratedImageBufferSurfaceForTesting* fakeAccelerateSurfacePtr = fake
AccelerateSurface.get(); |
| 688 canvasElement().createImageBufferUsingSurfaceForTesting(std::move(fakeAccele
rateSurface)); | 689 canvasElement().createImageBufferUsingSurfaceForTesting(std::move(fakeAccele
rateSurface)); |
| 689 // 800 = 10 * 10 * 4 * 2 where 10*10 is canvas size, 4 is num of bytes per p
ixel per buffer, | 690 // 800 = 10 * 10 * 4 * 2 where 10*10 is canvas size, 4 is num of bytes per p
ixel per buffer, |
| 690 // and 2 is an estimate of num of gpu buffers required | 691 // and 2 is an estimate of num of gpu buffers required |
| 691 EXPECT_EQ(800, getCurrentGPUMemoryUsage()); | 692 EXPECT_EQ(800, getCurrentGPUMemoryUsage()); |
| 692 EXPECT_EQ(800, getGlobalGPUMemoryUsage()); | 693 EXPECT_EQ(800, getGlobalGPUMemoryUsage()); |
| 694 EXPECT_EQ(1u, getGlobalAcceleratedImageBufferCount()); |
| 693 | 695 |
| 694 // Switching accelerated mode to non-accelerated mode | 696 // Switching accelerated mode to non-accelerated mode |
| 695 fakeAccelerateSurfacePtr->setIsAccelerated(false); | 697 fakeAccelerateSurfacePtr->setIsAccelerated(false); |
| 696 canvasElement().buffer()->updateGPUMemoryUsage(); | 698 canvasElement().buffer()->updateGPUMemoryUsage(); |
| 697 EXPECT_EQ(0, getCurrentGPUMemoryUsage()); | 699 EXPECT_EQ(0, getCurrentGPUMemoryUsage()); |
| 698 EXPECT_EQ(0, getGlobalGPUMemoryUsage()); | 700 EXPECT_EQ(0, getGlobalGPUMemoryUsage()); |
| 701 EXPECT_EQ(0u, getGlobalAcceleratedImageBufferCount()); |
| 699 | 702 |
| 700 // Switching non-accelerated mode to accelerated mode | 703 // Switching non-accelerated mode to accelerated mode |
| 701 fakeAccelerateSurfacePtr->setIsAccelerated(true); | 704 fakeAccelerateSurfacePtr->setIsAccelerated(true); |
| 702 canvasElement().buffer()->updateGPUMemoryUsage(); | 705 canvasElement().buffer()->updateGPUMemoryUsage(); |
| 703 EXPECT_EQ(800, getCurrentGPUMemoryUsage()); | 706 EXPECT_EQ(800, getCurrentGPUMemoryUsage()); |
| 704 EXPECT_EQ(800, getGlobalGPUMemoryUsage()); | 707 EXPECT_EQ(800, getGlobalGPUMemoryUsage()); |
| 708 EXPECT_EQ(1u, getGlobalAcceleratedImageBufferCount()); |
| 705 | 709 |
| 706 // Creating a different accelerated image buffer | 710 // Creating a different accelerated image buffer |
| 707 OwnPtr<FakeAcceleratedImageBufferSurfaceForTesting> fakeAccelerateSurface2 =
adoptPtr(new FakeAcceleratedImageBufferSurfaceForTesting(IntSize(10, 5), NonOpa
que)); | 711 OwnPtr<FakeAcceleratedImageBufferSurfaceForTesting> fakeAccelerateSurface2 =
adoptPtr(new FakeAcceleratedImageBufferSurfaceForTesting(IntSize(10, 5), NonOpa
que)); |
| 708 OwnPtr<ImageBuffer> imageBuffer2 = ImageBuffer::create(std::move(fakeAcceler
ateSurface2)); | 712 OwnPtr<ImageBuffer> imageBuffer2 = ImageBuffer::create(std::move(fakeAcceler
ateSurface2)); |
| 709 EXPECT_EQ(800, getCurrentGPUMemoryUsage()); | 713 EXPECT_EQ(800, getCurrentGPUMemoryUsage()); |
| 710 EXPECT_EQ(1200, getGlobalGPUMemoryUsage()); | 714 EXPECT_EQ(1200, getGlobalGPUMemoryUsage()); |
| 715 EXPECT_EQ(2u, getGlobalAcceleratedImageBufferCount()); |
| 711 | 716 |
| 712 // Tear down the first image buffer that resides in current canvas element | 717 // Tear down the first image buffer that resides in current canvas element |
| 713 canvasElement().setSize(IntSize(20, 20)); | 718 canvasElement().setSize(IntSize(20, 20)); |
| 714 Mock::VerifyAndClearExpectations(fakeAccelerateSurfacePtr); | 719 Mock::VerifyAndClearExpectations(fakeAccelerateSurfacePtr); |
| 715 EXPECT_EQ(400, getGlobalGPUMemoryUsage()); | 720 EXPECT_EQ(400, getGlobalGPUMemoryUsage()); |
| 721 EXPECT_EQ(1u, getGlobalAcceleratedImageBufferCount()); |
| 716 | 722 |
| 717 // Tear down the second image buffer | 723 // Tear down the second image buffer |
| 718 imageBuffer2.reset(); | 724 imageBuffer2.reset(); |
| 719 EXPECT_EQ(0, getGlobalGPUMemoryUsage()); | 725 EXPECT_EQ(0, getGlobalGPUMemoryUsage()); |
| 726 EXPECT_EQ(0u, getGlobalAcceleratedImageBufferCount()); |
| 720 } | 727 } |
| 721 | 728 |
| 722 } // namespace blink | 729 } // namespace blink |
| OLD | NEW |