OLD | NEW |
---|---|
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 "cc/layer_tree_host_impl.h" | 5 #include "cc/layer_tree_host_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
834 { | 834 { |
835 DCHECK(m_proxy->isImplThread()); | 835 DCHECK(m_proxy->isImplThread()); |
836 return m_renderer && m_renderer->isContextLost(); | 836 return m_renderer && m_renderer->isContextLost(); |
837 } | 837 } |
838 | 838 |
839 const RendererCapabilities& LayerTreeHostImpl::rendererCapabilities() const | 839 const RendererCapabilities& LayerTreeHostImpl::rendererCapabilities() const |
840 { | 840 { |
841 return m_renderer->capabilities(); | 841 return m_renderer->capabilities(); |
842 } | 842 } |
843 | 843 |
844 namespace { | |
845 // This implements a simple fence based on client side swaps. | |
846 // This is to isolate the ResourceProvider from 'frames' which | |
847 // it shouldn't need to care about, while still allowing us to | |
848 // enforce correct texture recycling behavior strictly throughout | |
849 // the compositor. The reason textures are recycled is so that | |
850 // we can avoid writing to them while they are in use on the GPU. | |
851 class SimpleSwapFence : public ResourceProvider::Fence { | |
852 public: | |
853 SimpleSwapFence() : m_passed(false) {} | |
854 virtual bool hasPassed() OVERRIDE { return m_passed; } | |
855 bool setToPassed() { m_passed = true; } | |
nduca
2013/02/05 22:39:05
m_passed -> m_hasPassed
setHasPassed()
epenner
2013/02/05 23:27:36
Done.
| |
856 private: | |
857 bool m_passed; | |
858 }; | |
859 } | |
860 | |
844 bool LayerTreeHostImpl::swapBuffers() | 861 bool LayerTreeHostImpl::swapBuffers() |
nduca
2013/02/05 22:39:05
what if output_surface.h had a scoped<RefPtr> Reso
piman
2013/02/05 22:46:47
Sadly I don't think it knows about it yet, though
epenner
2013/02/05 23:27:36
Done.
| |
845 { | 862 { |
846 DCHECK(m_renderer); | 863 DCHECK(m_renderer); |
847 bool result = m_renderer->swapBuffers(); | 864 bool result = m_renderer->swapBuffers(); |
848 | 865 |
866 scoped_refptr<ResourceProvider::Fence> lastSwapFence = m_resourceProvider->g etReadLockFence(); | |
867 if (lastSwapFence) | |
868 static_cast<SimpleSwapFence*>(lastSwapFence.get())->setToPassed(); | |
869 m_resourceProvider->setReadLockFence(new SimpleSwapFence()); | |
870 | |
piman
2013/02/05 22:19:07
Can we move that logic to the renderer? It shouldn
epenner
2013/02/05 23:27:36
Done.
| |
849 if (m_settings.implSidePainting && | 871 if (m_settings.implSidePainting && |
850 !activeTree()->AreVisibleResourcesReady()) { | 872 !activeTree()->AreVisibleResourcesReady()) { |
851 m_client->didSwapUseIncompleteTileOnImplThread(); | 873 m_client->didSwapUseIncompleteTileOnImplThread(); |
852 } | 874 } |
853 | 875 |
854 return result; | 876 return result; |
855 } | 877 } |
856 | 878 |
857 const gfx::Size& LayerTreeHostImpl::deviceViewportSize() const | 879 const gfx::Size& LayerTreeHostImpl::deviceViewportSize() const |
858 { | 880 { |
(...skipping 854 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1713 LayerImpl* layer = getNonCompositedContentLayerRecursive(tree->RootLayer()); | 1735 LayerImpl* layer = getNonCompositedContentLayerRecursive(tree->RootLayer()); |
1714 return layer ? layer->getPicture() : skia::RefPtr<SkPicture>(); | 1736 return layer ? layer->getPicture() : skia::RefPtr<SkPicture>(); |
1715 } | 1737 } |
1716 | 1738 |
1717 void LayerTreeHostImpl::savePaintTime(const base::TimeDelta& totalPaintTime) | 1739 void LayerTreeHostImpl::savePaintTime(const base::TimeDelta& totalPaintTime) |
1718 { | 1740 { |
1719 m_paintTimeCounter->SavePaintTime(totalPaintTime); | 1741 m_paintTimeCounter->SavePaintTime(totalPaintTime); |
1720 } | 1742 } |
1721 | 1743 |
1722 } // namespace cc | 1744 } // namespace cc |
OLD | NEW |