OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 #ifndef CC_SOFTWARE_RENDERER_H_ | 5 #ifndef CC_SOFTWARE_RENDERER_H_ |
6 #define CC_SOFTWARE_RENDERER_H_ | 6 #define CC_SOFTWARE_RENDERER_H_ |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "cc/cc_export.h" | 9 #include "cc/cc_export.h" |
| 10 #include "cc/compositor_frame.h" |
10 #include "cc/direct_renderer.h" | 11 #include "cc/direct_renderer.h" |
11 | 12 |
12 namespace cc { | 13 namespace cc { |
13 | 14 |
| 15 class OutputSurface; |
| 16 class SoftwareOutputDevice; |
14 class DebugBorderDrawQuad; | 17 class DebugBorderDrawQuad; |
15 class RendererClient; | 18 class RendererClient; |
16 class RenderPassDrawQuad; | 19 class RenderPassDrawQuad; |
17 class ResourceProvider; | 20 class ResourceProvider; |
18 class SoftwareOutputDevice; | |
19 class SolidColorDrawQuad; | 21 class SolidColorDrawQuad; |
20 class TextureDrawQuad; | 22 class TextureDrawQuad; |
21 class TileDrawQuad; | 23 class TileDrawQuad; |
22 | 24 |
23 class CC_EXPORT SoftwareRenderer : public DirectRenderer { | 25 class CC_EXPORT SoftwareRenderer : public DirectRenderer { |
24 public: | 26 public: |
25 static scoped_ptr<SoftwareRenderer> create(RendererClient*, ResourceProvider
*, SoftwareOutputDevice*); | 27 static scoped_ptr<SoftwareRenderer> create(RendererClient*, OutputSurface*,
ResourceProvider*); |
| 28 |
26 virtual ~SoftwareRenderer(); | 29 virtual ~SoftwareRenderer(); |
27 | 30 |
28 virtual const RendererCapabilities& capabilities() const OVERRIDE; | 31 virtual const RendererCapabilities& capabilities() const OVERRIDE; |
29 | 32 |
30 virtual void viewportChanged() OVERRIDE; | 33 virtual void viewportChanged() OVERRIDE; |
31 | 34 |
32 virtual void finish() OVERRIDE; | 35 virtual void finish() OVERRIDE; |
33 | 36 |
34 virtual bool swapBuffers() OVERRIDE; | 37 virtual bool swapBuffers() OVERRIDE; |
35 | 38 |
36 virtual void getFramebufferPixels(void *pixels, const gfx::Rect&) OVERRIDE; | 39 virtual void getFramebufferPixels(void *pixels, const gfx::Rect&) OVERRIDE; |
37 | 40 |
38 virtual void setVisible(bool) OVERRIDE; | 41 virtual void setVisible(bool) OVERRIDE; |
39 | 42 |
40 virtual void sendManagedMemoryStats(size_t bytesVisible, size_t bytesVisible
AndNearby, size_t bytesAllocated) OVERRIDE { } | 43 virtual void sendManagedMemoryStats(size_t bytesVisible, size_t bytesVisible
AndNearby, size_t bytesAllocated) OVERRIDE { } |
41 | 44 |
| 45 virtual void receiveCompositorFrameAck(const CompositorFrameAck&) OVERRIDE; |
| 46 |
42 protected: | 47 protected: |
43 virtual void bindFramebufferToOutputSurface(DrawingFrame&) OVERRIDE; | 48 virtual void bindFramebufferToOutputSurface(DrawingFrame&) OVERRIDE; |
44 virtual bool bindFramebufferToTexture(DrawingFrame&, const ScopedResource*,
const gfx::Rect& framebufferRect) OVERRIDE; | 49 virtual bool bindFramebufferToTexture(DrawingFrame&, const ScopedResource*,
const gfx::Rect& framebufferRect) OVERRIDE; |
45 virtual void setDrawViewportSize(const gfx::Size&) OVERRIDE; | 50 virtual void setDrawViewportSize(const gfx::Size&) OVERRIDE; |
46 virtual void setScissorTestRect(const gfx::Rect& scissorRect) OVERRIDE; | 51 virtual void setScissorTestRect(const gfx::Rect& scissorRect) OVERRIDE; |
47 virtual void clearFramebuffer(DrawingFrame&) OVERRIDE; | 52 virtual void clearFramebuffer(DrawingFrame&) OVERRIDE; |
48 virtual void drawQuad(DrawingFrame&, const DrawQuad*) OVERRIDE; | 53 virtual void drawQuad(DrawingFrame&, const DrawQuad*) OVERRIDE; |
49 virtual void beginDrawingFrame(DrawingFrame&) OVERRIDE; | 54 virtual void beginDrawingFrame(DrawingFrame&) OVERRIDE; |
50 virtual void finishDrawingFrame(DrawingFrame&) OVERRIDE; | 55 virtual void finishDrawingFrame(DrawingFrame&) OVERRIDE; |
51 virtual bool flippedFramebuffer() const OVERRIDE; | 56 virtual bool flippedFramebuffer() const OVERRIDE; |
52 virtual void ensureScissorTestEnabled() OVERRIDE; | 57 virtual void ensureScissorTestEnabled() OVERRIDE; |
53 virtual void ensureScissorTestDisabled() OVERRIDE; | 58 virtual void ensureScissorTestDisabled() OVERRIDE; |
54 | 59 |
55 private: | 60 private: |
56 SoftwareRenderer(RendererClient*, ResourceProvider*, SoftwareOutputDevice*); | 61 SoftwareRenderer(RendererClient*, OutputSurface*, ResourceProvider*); |
57 | 62 |
58 void clearCanvas(SkColor color); | 63 void clearCanvas(SkColor color); |
59 void setClipRect(const gfx::Rect& rect); | 64 void setClipRect(const gfx::Rect& rect); |
60 bool isSoftwareResource(ResourceProvider::ResourceId) const; | 65 bool isSoftwareResource(ResourceProvider::ResourceId) const; |
61 | 66 |
62 void drawDebugBorderQuad(const DrawingFrame&, const DebugBorderDrawQuad*); | 67 void drawDebugBorderQuad(const DrawingFrame&, const DebugBorderDrawQuad*); |
63 void drawSolidColorQuad(const DrawingFrame&, const SolidColorDrawQuad*); | 68 void drawSolidColorQuad(const DrawingFrame&, const SolidColorDrawQuad*); |
64 void drawTextureQuad(const DrawingFrame&, const TextureDrawQuad*); | 69 void drawTextureQuad(const DrawingFrame&, const TextureDrawQuad*); |
65 void drawTileQuad(const DrawingFrame&, const TileDrawQuad*); | 70 void drawTileQuad(const DrawingFrame&, const TileDrawQuad*); |
66 void drawRenderPassQuad(const DrawingFrame& frame, const RenderPassDrawQuad*
); | 71 void drawRenderPassQuad(const DrawingFrame& frame, const RenderPassDrawQuad*
); |
67 void drawUnsupportedQuad(const DrawingFrame&, const DrawQuad*); | 72 void drawUnsupportedQuad(const DrawingFrame&, const DrawQuad*); |
68 | 73 |
69 RendererCapabilities m_capabilities; | 74 RendererCapabilities m_capabilities; |
70 bool m_visible; | 75 bool m_visible; |
71 bool m_isScissorEnabled; | 76 bool m_isScissorEnabled; |
72 gfx::Rect m_scissorRect; | 77 gfx::Rect m_scissorRect; |
73 | 78 |
| 79 OutputSurface* m_outputSurface; |
74 SoftwareOutputDevice* m_outputDevice; | 80 SoftwareOutputDevice* m_outputDevice; |
75 scoped_ptr<SkCanvas> m_skRootCanvas; | 81 SkCanvas* m_skRootCanvas; |
76 SkCanvas* m_skCurrentCanvas; | 82 SkCanvas* m_skCurrentCanvas; |
77 SkPaint m_skCurrentPaint; | 83 SkPaint m_skCurrentPaint; |
78 scoped_ptr<ResourceProvider::ScopedWriteLockSoftware> m_currentFramebufferLo
ck; | 84 scoped_ptr<ResourceProvider::ScopedWriteLockSoftware> m_currentFramebufferLo
ck; |
| 85 CompositorFrame m_compositorFrame; |
79 | 86 |
80 DISALLOW_COPY_AND_ASSIGN(SoftwareRenderer); | 87 DISALLOW_COPY_AND_ASSIGN(SoftwareRenderer); |
81 }; | 88 }; |
82 | 89 |
83 } | 90 } |
84 | 91 |
85 #endif // CC_SOFTWARE_RENDERER_H_ | 92 #endif // CC_SOFTWARE_RENDERER_H_ |
OLD | NEW |