Changeset 116731 in webkit
- Timestamp:
- May 10, 2012 11:33:58 PM (12 years ago)
- Location:
- trunk/Source
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r116730 r116731 1 2012-05-10 David Reveman <reveman@chromium.org> 2 3 [Chromium] Move instantiation of texture uploader to LayerRendererChromium. 4 https://bugs.webkit.org/show_bug.cgi?id=85893 5 6 Reviewed by Adrienne Walker. 7 8 Move instantiation of texture uploader to LayerRendererChromium and 9 allow CCProxy to decide between a throttled or unthrottled uploader 10 using a flag passed to the LayerRendererChromium constructor. 11 12 * platform/graphics/chromium/LayerRendererChromium.cpp: 13 (WebCore::LayerRendererChromium::create): 14 (WebCore::LayerRendererChromium::LayerRendererChromium): 15 (WebCore::LayerRendererChromium::initializeSharedObjects): 16 * platform/graphics/chromium/LayerRendererChromium.h: 17 (LayerRendererChromium): 18 * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: 19 (WebCore::CCLayerTreeHostImpl::initializeLayerRenderer): 20 * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h: 21 (CCLayerTreeHostImpl): 22 * platform/graphics/chromium/cc/CCSingleThreadProxy.cpp: 23 (WebCore::CCSingleThreadProxy::initializeLayerRenderer): 24 (WebCore::CCSingleThreadProxy::recreateContext): 25 * platform/graphics/chromium/cc/CCThreadProxy.cpp: 26 (WebCore::CCThreadProxy::initializeLayerRendererOnImplThread): 27 (WebCore::CCThreadProxy::recreateContextOnImplThread): 28 1 29 2012-05-10 MORITA Hajime <morrita@google.com> 2 30 -
trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
r116351 r116731 144 144 } 145 145 146 class UnthrottledTextureUploader : public TextureUploader { 147 WTF_MAKE_NONCOPYABLE(UnthrottledTextureUploader); 148 public: 149 static PassOwnPtr<UnthrottledTextureUploader> create() 150 { 151 return adoptPtr(new UnthrottledTextureUploader()); 152 } 153 virtual ~UnthrottledTextureUploader() { } 154 155 virtual bool isBusy() { return false; } 156 virtual void beginUploads() { } 157 virtual void endUploads() { } 158 virtual void uploadTexture(GraphicsContext3D* context, LayerTextureUpdater::Texture* texture, TextureAllocator* allocator, const IntRect sourceRect, const IntRect destRect) { texture->updateRect(context, allocator, sourceRect, destRect); } 159 160 protected: 161 UnthrottledTextureUploader() { } 162 }; 163 146 164 } // anonymous namespace 147 165 … … 195 213 196 214 197 PassOwnPtr<LayerRendererChromium> LayerRendererChromium::create(LayerRendererChromiumClient* client, PassRefPtr<GraphicsContext3D> context, PassOwnPtr<TextureUploader> uploader)198 { 199 OwnPtr<LayerRendererChromium> layerRenderer(adoptPtr(new LayerRendererChromium(client, context, uploader)));215 PassOwnPtr<LayerRendererChromium> LayerRendererChromium::create(LayerRendererChromiumClient* client, PassRefPtr<GraphicsContext3D> context, TextureUploaderOption textureUploaderSetting) 216 { 217 OwnPtr<LayerRendererChromium> layerRenderer(adoptPtr(new LayerRendererChromium(client, context, textureUploaderSetting))); 200 218 if (!layerRenderer->initialize()) 201 219 return nullptr; … … 206 224 LayerRendererChromium::LayerRendererChromium(LayerRendererChromiumClient* client, 207 225 PassRefPtr<GraphicsContext3D> context, 208 PassOwnPtr<TextureUploader> uploader)226 TextureUploaderOption textureUploaderSetting) 209 227 : m_client(client) 210 228 , m_currentRenderSurface(0) 211 229 , m_currentManagedTexture(0) 212 230 , m_offscreenFramebufferId(0) 213 , m_textureUploader(uploader)214 231 , m_context(context) 215 232 , m_defaultRenderSurface(0) … … 217 234 , m_isViewportChanged(false) 218 235 , m_isFramebufferDiscarded(false) 236 , m_textureUploaderSetting(m_textureUploaderSetting) 219 237 { 220 238 } … … 1383 1401 m_capabilities.maxTextureSize); 1384 1402 m_textureCopier = AcceleratedTextureCopier::create(m_context.get()); 1403 if (m_textureUploaderSetting == ThrottledUploader) 1404 m_textureUploader = ThrottledTextureUploader::create(m_context.get()); 1405 else 1406 m_textureUploader = UnthrottledTextureUploader::create(); 1385 1407 m_contentsTextureAllocator = TrackingTextureAllocator::create(m_context.get()); 1386 1408 m_renderSurfaceTextureAllocator = TrackingTextureAllocator::create(m_context.get()); -
trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h
r116351 r116731 75 75 }; 76 76 77 enum TextureUploaderOption { ThrottledUploader, UnthrottledUploader }; 78 77 79 // Class that handles drawing of composited render layers using GL. 78 80 class LayerRendererChromium { 79 81 WTF_MAKE_NONCOPYABLE(LayerRendererChromium); 80 82 public: 81 static PassOwnPtr<LayerRendererChromium> create(LayerRendererChromiumClient*, PassRefPtr<GraphicsContext3D>, PassOwnPtr<TextureUploader>);83 static PassOwnPtr<LayerRendererChromium> create(LayerRendererChromiumClient*, PassRefPtr<GraphicsContext3D>, TextureUploaderOption); 82 84 83 85 ~LayerRendererChromium(); … … 145 147 bool isFramebufferDiscarded() const { return m_isFramebufferDiscarded; } 146 148 147 LayerRendererChromium(LayerRendererChromiumClient*, PassRefPtr<GraphicsContext3D>, PassOwnPtr<TextureUploader>);149 LayerRendererChromium(LayerRendererChromiumClient*, PassRefPtr<GraphicsContext3D>, TextureUploaderOption); 148 150 bool initialize(); 149 151 … … 299 301 bool m_isViewportChanged; 300 302 bool m_isFramebufferDiscarded; 303 TextureUploaderOption m_textureUploaderSetting; 301 304 }; 302 305 -
trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp
r116714 r116731 527 527 } 528 528 529 bool CCLayerTreeHostImpl::initializeLayerRenderer(PassRefPtr<GraphicsContext3D> context, PassOwnPtr<TextureUploader> uploader)529 bool CCLayerTreeHostImpl::initializeLayerRenderer(PassRefPtr<GraphicsContext3D> context, TextureUploaderOption textureUploader) 530 530 { 531 531 OwnPtr<LayerRendererChromium> layerRenderer; 532 layerRenderer = LayerRendererChromium::create(this, context, uploader);532 layerRenderer = LayerRendererChromium::create(this, context, textureUploader); 533 533 534 534 // Since we now have a new context/layerRenderer, we cannot continue to use the old -
trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h
r116351 r116731 123 123 int frameNumber() const { return m_frameNumber; } 124 124 125 bool initializeLayerRenderer(PassRefPtr<GraphicsContext3D>, PassOwnPtr<TextureUploader>);125 bool initializeLayerRenderer(PassRefPtr<GraphicsContext3D>, TextureUploaderOption); 126 126 bool isContextLost(); 127 127 LayerRendererChromium* layerRenderer() { return m_layerRenderer.get(); } -
trunk/Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp
r116714 r116731 39 39 namespace WebCore { 40 40 41 class UnthrottledTextureUploader : public TextureUploader {42 WTF_MAKE_NONCOPYABLE(UnthrottledTextureUploader);43 public:44 static PassOwnPtr<UnthrottledTextureUploader> create()45 {46 return adoptPtr(new UnthrottledTextureUploader());47 }48 virtual ~UnthrottledTextureUploader() { }49 50 virtual bool isBusy() { return false; }51 virtual void beginUploads() { }52 virtual void endUploads() { }53 virtual void uploadTexture(GraphicsContext3D* context, LayerTextureUpdater::Texture* texture, TextureAllocator* allocator, const IntRect sourceRect, const IntRect destRect) { texture->updateRect(context, allocator, sourceRect, destRect); }54 55 protected:56 UnthrottledTextureUploader() { }57 };58 59 41 PassOwnPtr<CCProxy> CCSingleThreadProxy::create(CCLayerTreeHost* layerTreeHost) 60 42 { … … 156 138 { 157 139 DebugScopedSetImplThread impl; 158 bool ok = m_layerTreeHostImpl->initializeLayerRenderer(m_contextBeforeInitialization.release(), Unthrottled TextureUploader::create());140 bool ok = m_layerTreeHostImpl->initializeLayerRenderer(m_contextBeforeInitialization.release(), UnthrottledUploader); 159 141 if (ok) { 160 142 m_layerRendererInitialized = true; … … 180 162 DebugScopedSetImplThread impl; 181 163 m_layerTreeHost->deleteContentsTexturesOnImplThread(m_layerTreeHostImpl->contentsTextureAllocator()); 182 initialized = m_layerTreeHostImpl->initializeLayerRenderer(context, Unthrottled TextureUploader::create());164 initialized = m_layerTreeHostImpl->initializeLayerRenderer(context, UnthrottledUploader); 183 165 if (initialized) { 184 166 m_layerRendererCapabilitiesForMainThread = m_layerTreeHostImpl->layerRendererCapabilities(); -
trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp
r116587 r116731 58 58 namespace WebCore { 59 59 60 // FIXME: remove when ThrottledTextureUploader is ready to be used. 61 class UnthrottledTextureUploader : public TextureUploader { 62 WTF_MAKE_NONCOPYABLE(UnthrottledTextureUploader); 63 public: 64 static PassOwnPtr<UnthrottledTextureUploader> create(PassRefPtr<GraphicsContext3D> context) 65 { 66 return adoptPtr(new UnthrottledTextureUploader(context)); 67 } 68 virtual ~UnthrottledTextureUploader() { } 69 70 virtual bool isBusy() { return false; } 71 virtual void beginUploads() { } 72 virtual void endUploads() { } 73 virtual void uploadTexture(GraphicsContext3D* context, LayerTextureUpdater::Texture* texture, TextureAllocator* allocator, const IntRect sourceRect, const IntRect destRect) { texture->updateRect(context, allocator, sourceRect, destRect); } 74 75 protected: 76 explicit UnthrottledTextureUploader(PassRefPtr<GraphicsContext3D>) { } 77 }; 60 namespace { 61 62 // FIXME: Use ThrottledUploader by default. 63 static TextureUploaderOption textureUploader = UnthrottledUploader; 64 65 } // anonymous namespace 78 66 79 67 PassOwnPtr<CCProxy> CCThreadProxy::create(CCLayerTreeHost* layerTreeHost) … … 835 823 ASSERT(isImplThread()); 836 824 ASSERT(m_contextBeforeInitializationOnImplThread); 837 OwnPtr<TextureUploader> uploader = UnthrottledTextureUploader::create(m_contextBeforeInitializationOnImplThread.get()); 838 *initializeSucceeded = m_layerTreeHostImpl->initializeLayerRenderer(m_contextBeforeInitializationOnImplThread.release(), uploader.release()); 825 *initializeSucceeded = m_layerTreeHostImpl->initializeLayerRenderer(m_contextBeforeInitializationOnImplThread.release(), textureUploader); 839 826 if (*initializeSucceeded) { 840 827 *capabilities = m_layerTreeHostImpl->layerRendererCapabilities(); … … 886 873 ASSERT(isImplThread()); 887 874 m_layerTreeHost->deleteContentsTexturesOnImplThread(m_layerTreeHostImpl->contentsTextureAllocator()); 888 OwnPtr<TextureUploader> uploader = UnthrottledTextureUploader::create(contextPtr); 889 *recreateSucceeded = m_layerTreeHostImpl->initializeLayerRenderer(adoptRef(contextPtr), uploader.release()); 875 *recreateSucceeded = m_layerTreeHostImpl->initializeLayerRenderer(adoptRef(contextPtr), textureUploader); 890 876 if (*recreateSucceeded) { 891 877 *capabilities = m_layerTreeHostImpl->layerRendererCapabilities(); -
trunk/Source/WebKit/chromium/ChangeLog
r116727 r116731 1 2012-05-10 David Reveman <reveman@chromium.org> 2 3 [Chromium] Move instantiation of texture uploader to LayerRendererChromium. 4 https://bugs.webkit.org/show_bug.cgi?id=85893 5 6 Reviewed by Adrienne Walker. 7 8 * tests/CCLayerTreeHostImplTest.cpp: 9 (WebKitTests::CCLayerTreeHostImplTest::CCLayerTreeHostImplTest): 10 (WebKitTests::TEST_F): 11 * tests/LayerRendererChromiumTest.cpp: 12 (FakeLayerRendererChromium::FakeLayerRendererChromium): 13 (LayerRendererChromiumTest::LayerRendererChromiumTest): 14 (TEST): 15 1 16 2012-05-10 Min Qin <qinmin@google.com> 2 17 -
trunk/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp
r116587 r116731 29 29 #include "CCAnimationTestCommon.h" 30 30 #include "CCLayerTestCommon.h" 31 #include "CCTiledLayerTestCommon.h"32 31 #include "FakeWebGraphicsContext3D.h" 33 32 #include "GraphicsContext3DPrivate.h" … … 61 60 CCSettings settings; 62 61 m_hostImpl = CCLayerTreeHostImpl::create(settings, this); 63 m_hostImpl->initializeLayerRenderer(createContext(), adoptPtr(new FakeTextureUploader));62 m_hostImpl->initializeLayerRenderer(createContext(), UnthrottledUploader); 64 63 m_hostImpl->setViewportSize(IntSize(10, 10)); 65 64 } … … 877 876 TEST_F(CCLayerTreeHostImplTest, viewportCovered) 878 877 { 879 m_hostImpl->initializeLayerRenderer(createContext(), adoptPtr(new FakeTextureUploader));878 m_hostImpl->initializeLayerRenderer(createContext(), UnthrottledUploader); 880 879 m_hostImpl->setBackgroundColor(Color::gray); 881 880 … … 988 987 ReshapeTrackerContext* reshapeTracker = new ReshapeTrackerContext(); 989 988 RefPtr<GraphicsContext3D> context = GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(reshapeTracker), GraphicsContext3D::RenderDirectlyToHostWindow); 990 m_hostImpl->initializeLayerRenderer(context, adoptPtr(new FakeTextureUploader));989 m_hostImpl->initializeLayerRenderer(context, UnthrottledUploader); 991 990 992 991 CCLayerImpl* root = new FakeDrawableCCLayerImpl(1); … … 1037 1036 settings.partialSwapEnabled = true; 1038 1037 OwnPtr<CCLayerTreeHostImpl> layerTreeHostImpl = CCLayerTreeHostImpl::create(settings, this); 1039 layerTreeHostImpl->initializeLayerRenderer(context, adoptPtr(new FakeTextureUploader()));1038 layerTreeHostImpl->initializeLayerRenderer(context, UnthrottledUploader); 1040 1039 layerTreeHostImpl->setViewportSize(IntSize(500, 500)); 1041 1040 … … 1136 1135 EXPECT_FALSE(layer2->didLoseContextCalled()); 1137 1136 1138 m_hostImpl->initializeLayerRenderer(createContext(), adoptPtr(new FakeTextureUploader));1137 m_hostImpl->initializeLayerRenderer(createContext(), UnthrottledUploader); 1139 1138 1140 1139 EXPECT_TRUE(root->didLoseContextCalled()); … … 1151 1150 { 1152 1151 // The context initialization will fail, but we should still be able to call finishAllRendering() without any ill effects. 1153 m_hostImpl->initializeLayerRenderer(GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(new FakeWebGraphicsContext3DMakeCurrentFails), GraphicsContext3D::RenderDirectlyToHostWindow), adoptPtr(new FakeTextureUploader));1152 m_hostImpl->initializeLayerRenderer(GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(new FakeWebGraphicsContext3DMakeCurrentFails), GraphicsContext3D::RenderDirectlyToHostWindow), UnthrottledUploader); 1154 1153 m_hostImpl->finishAllRendering(); 1155 1154 } … … 1181 1180 EXPECT_GT(renderPass->quadList().size(), 0u); 1182 1181 m_hostImpl->didDrawAllLayers(frame); 1183 m_hostImpl->initializeLayerRenderer(createContext(), adoptPtr(new FakeTextureUploader));1182 m_hostImpl->initializeLayerRenderer(createContext(), UnthrottledUploader); 1184 1183 } 1185 1184 } … … 1356 1355 // Lose the context, replacing it with a StrictWebGraphicsContext3D, that 1357 1356 // will warn if any resource from the previous context gets used. 1358 m_hostImpl->initializeLayerRenderer(StrictWebGraphicsContext3D::createGraphicsContext(), adoptPtr(new FakeTextureUploader));1357 m_hostImpl->initializeLayerRenderer(StrictWebGraphicsContext3D::createGraphicsContext(), UnthrottledUploader); 1359 1358 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 1360 1359 m_hostImpl->drawLayers(frame); -
trunk/Source/WebKit/chromium/tests/LayerRendererChromiumTest.cpp
r116351 r116731 26 26 #include "LayerRendererChromium.h" 27 27 28 #include "CCTiledLayerTestCommon.h"29 28 #include "FakeWebGraphicsContext3D.h" 30 29 #include "GraphicsContext3D.h" … … 37 36 using namespace WebCore; 38 37 using namespace WebKit; 39 using namespace WebKitTests;40 38 41 39 class FrameCountingMemoryAllocationSettingContext : public FakeWebGraphicsContext3D { … … 94 92 class FakeLayerRendererChromium : public LayerRendererChromium { 95 93 public: 96 FakeLayerRendererChromium(LayerRendererChromiumClient* client, PassRefPtr<GraphicsContext3D> context , PassOwnPtr<TextureUploader> uploader) : LayerRendererChromium(client, context, uploader) { }94 FakeLayerRendererChromium(LayerRendererChromiumClient* client, PassRefPtr<GraphicsContext3D> context) : LayerRendererChromium(client, context, UnthrottledUploader) { } 97 95 98 96 // LayerRendererChromium methods. … … 110 108 , m_context(GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(new FrameCountingMemoryAllocationSettingContext()), GraphicsContext3D::RenderDirectlyToHostWindow)) 111 109 , m_mockContext(*static_cast<FrameCountingMemoryAllocationSettingContext*>(GraphicsContext3DPrivate::extractWebGraphicsContext3D(m_context.get()))) 112 , m_layerRendererChromium(&m_mockClient, m_context.release() , adoptPtr(new FakeTextureUploader()))110 , m_layerRendererChromium(&m_mockClient, m_context.release()) 113 111 { 114 112 } … … 274 272 { 275 273 FakeLayerRendererChromiumClient mockClient; 276 FakeLayerRendererChromium layerRendererChromium(&mockClient, GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(new ForbidSynchronousCallContext), GraphicsContext3D::RenderDirectlyToHostWindow) , adoptPtr(new FakeTextureUploader()));274 FakeLayerRendererChromium layerRendererChromium(&mockClient, GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(new ForbidSynchronousCallContext), GraphicsContext3D::RenderDirectlyToHostWindow)); 277 275 278 276 EXPECT_TRUE(layerRendererChromium.initialize());
Note: See TracChangeset
for help on using the changeset viewer.