summaryrefslogtreecommitdiffstats
path: root/cc/output/software_renderer.h
diff options
context:
space:
mode:
authorjamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-18 07:24:30 +0000
committerjamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-18 07:24:30 +0000
commit7f0d825f49dde66a6e9137a4e35460765bc5f0d8 (patch)
tree6944603cf2a97934afad6e599500ff45091316ed /cc/output/software_renderer.h
parent95e4e1a0fda6929b47702e69e4ddfe384b5d014b (diff)
downloadchromium_src-7f0d825f49dde66a6e9137a4e35460765bc5f0d8.zip
chromium_src-7f0d825f49dde66a6e9137a4e35460765bc5f0d8.tar.gz
chromium_src-7f0d825f49dde66a6e9137a4e35460765bc5f0d8.tar.bz2
Part 4 of cc/ directory shuffles: output
Continuation of https://src.chromium.org/viewvc/chrome?view=rev&revision=188681 BUG=190824 TBR=piman@chromium.org, jschuh@chromium.org Review URL: https://codereview.chromium.org/12912006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@188689 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/output/software_renderer.h')
-rw-r--r--cc/output/software_renderer.h104
1 files changed, 104 insertions, 0 deletions
diff --git a/cc/output/software_renderer.h b/cc/output/software_renderer.h
new file mode 100644
index 0000000..5e2c4c1
--- /dev/null
+++ b/cc/output/software_renderer.h
@@ -0,0 +1,104 @@
+// Copyright 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CC_OUTPUT_SOFTWARE_RENDERER_H_
+#define CC_OUTPUT_SOFTWARE_RENDERER_H_
+
+#include "base/basictypes.h"
+#include "cc/base/cc_export.h"
+#include "cc/output/compositor_frame.h"
+#include "cc/output/direct_renderer.h"
+
+namespace cc {
+
+class OutputSurface;
+class SoftwareOutputDevice;
+class DebugBorderDrawQuad;
+class RendererClient;
+class RenderPassDrawQuad;
+class ResourceProvider;
+class SolidColorDrawQuad;
+class TextureDrawQuad;
+class TileDrawQuad;
+
+class CC_EXPORT SoftwareRenderer : public DirectRenderer {
+ public:
+ static scoped_ptr<SoftwareRenderer> Create(
+ RendererClient* client,
+ OutputSurface* output_surface,
+ ResourceProvider* resource_provider);
+
+ virtual ~SoftwareRenderer();
+ virtual const RendererCapabilities& Capabilities() const OVERRIDE;
+ virtual void ViewportChanged() OVERRIDE;
+ virtual void Finish() OVERRIDE;
+ virtual bool SwapBuffers() OVERRIDE;
+ virtual void GetFramebufferPixels(void* pixels, gfx::Rect rect) OVERRIDE;
+ virtual void SetVisible(bool visible) OVERRIDE;
+ virtual void SendManagedMemoryStats(
+ size_t bytes_visible,
+ size_t bytes_visible_and_nearby,
+ size_t bytes_allocated) OVERRIDE {}
+ virtual void ReceiveCompositorFrameAck(
+ const CompositorFrameAck& ack) OVERRIDE;
+
+ protected:
+ virtual void BindFramebufferToOutputSurface(DrawingFrame& frame) OVERRIDE;
+ virtual bool BindFramebufferToTexture(
+ DrawingFrame& frame,
+ const ScopedResource* texture,
+ gfx::Rect framebuffer_rect) OVERRIDE;
+ virtual void SetDrawViewportSize(gfx::Size viewport_size) OVERRIDE;
+ virtual void SetScissorTestRect(gfx::Rect scissor_rect) OVERRIDE;
+ virtual void ClearFramebuffer(DrawingFrame& frame) OVERRIDE;
+ virtual void DoDrawQuad(DrawingFrame& frame, const DrawQuad* quad) OVERRIDE;
+ virtual void BeginDrawingFrame(DrawingFrame& frame) OVERRIDE;
+ virtual void FinishDrawingFrame(DrawingFrame& frame) OVERRIDE;
+ virtual bool FlippedFramebuffer() const OVERRIDE;
+ virtual void EnsureScissorTestEnabled() OVERRIDE;
+ virtual void EnsureScissorTestDisabled() OVERRIDE;
+
+ private:
+ SoftwareRenderer(
+ RendererClient* client,
+ OutputSurface* output_surface,
+ ResourceProvider* resource_provider);
+
+ void ClearCanvas(SkColor color);
+ void SetClipRect(gfx::Rect rect);
+ bool IsSoftwareResource(ResourceProvider::ResourceId resource_id) const;
+
+ void DrawDebugBorderQuad(const DrawingFrame& frame,
+ const DebugBorderDrawQuad* quad);
+ void DrawSolidColorQuad(const DrawingFrame& frame,
+ const SolidColorDrawQuad* quad);
+ void DrawTextureQuad(const DrawingFrame& frame,
+ const TextureDrawQuad* quad);
+ void DrawTileQuad(const DrawingFrame& frame,
+ const TileDrawQuad* quad);
+ void DrawRenderPassQuad(const DrawingFrame& frame,
+ const RenderPassDrawQuad* quad);
+ void DrawUnsupportedQuad(const DrawingFrame& frame,
+ const DrawQuad* quad);
+
+ RendererCapabilities capabilities_;
+ bool visible_;
+ bool is_scissor_enabled_;
+ gfx::Rect scissor_rect_;
+
+ OutputSurface* output_surface_;
+ SoftwareOutputDevice* output_device_;
+ SkCanvas* root_canvas_;
+ SkCanvas* current_canvas_;
+ SkPaint current_paint_;
+ scoped_ptr<ResourceProvider::ScopedWriteLockSoftware>
+ current_framebuffer_lock_;
+ CompositorFrame compositor_frame_;
+
+ DISALLOW_COPY_AND_ASSIGN(SoftwareRenderer);
+};
+
+}
+
+#endif // CC_OUTPUT_SOFTWARE_RENDERER_H_