From 7f0d825f49dde66a6e9137a4e35460765bc5f0d8 Mon Sep 17 00:00:00 2001 From: "jamesr@chromium.org" Date: Mon, 18 Mar 2013 07:24:30 +0000 Subject: 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 --- cc/output/software_renderer.h | 104 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 cc/output/software_renderer.h (limited to 'cc/output/software_renderer.h') 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 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 + current_framebuffer_lock_; + CompositorFrame compositor_frame_; + + DISALLOW_COPY_AND_ASSIGN(SoftwareRenderer); +}; + +} + +#endif // CC_OUTPUT_SOFTWARE_RENDERER_H_ -- cgit v1.1