diff options
author | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-12 22:43:41 +0000 |
---|---|---|
committer | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-12 22:43:41 +0000 |
commit | cd57cc5a246367c2558fefa04ae9eca8f4d545d2 (patch) | |
tree | a2235045e9c5e4ff028d641b76f5d01aa5461b26 /cc/direct_renderer.h | |
parent | 3fe7ba055be580443445895c0ee01ada3b628487 (diff) | |
download | chromium_src-cd57cc5a246367c2558fefa04ae9eca8f4d545d2.zip chromium_src-cd57cc5a246367c2558fefa04ae9eca8f4d545d2.tar.gz chromium_src-cd57cc5a246367c2558fefa04ae9eca8f4d545d2.tar.bz2 |
[cc] Rename all cc/ filenames to Chromium style
BUG=155413
Review URL: https://codereview.chromium.org/11122003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161671 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/direct_renderer.h')
-rw-r--r-- | cc/direct_renderer.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/cc/direct_renderer.h b/cc/direct_renderer.h index 638cbb2..73e6dc6 100644 --- a/cc/direct_renderer.h +++ b/cc/direct_renderer.h @@ -1,3 +1,105 @@ // 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 CCDirectRenderer_h +#define CCDirectRenderer_h + +#include "base/basictypes.h" +#include "CCRenderer.h" +#include "CCResourceProvider.h" +#include "CCScopedTexture.h" + +namespace cc { + +class CCResourceProvider; + +// This is the base class for code shared between the GL and software +// renderer implementations. "Direct" refers to the fact that it does not +// delegate rendering to another compositor. +class CCDirectRenderer : public CCRenderer { +public: + virtual ~CCDirectRenderer(); + + CCResourceProvider* resourceProvider() const { return m_resourceProvider; } + + virtual void decideRenderPassAllocationsForFrame(const CCRenderPassList& renderPassesInDrawOrder) OVERRIDE; + virtual bool haveCachedResourcesForRenderPassId(CCRenderPass::Id) const OVERRIDE; + virtual void drawFrame(const CCRenderPassList& renderPassesInDrawOrder, const CCRenderPassIdHashMap& renderPassesById) OVERRIDE; + +protected: + CCDirectRenderer(CCRendererClient* client, CCResourceProvider* resourceProvider); + + struct DrawingFrame { + DrawingFrame(); + ~DrawingFrame(); + + const CCRenderPassIdHashMap* renderPassesById; + const CCRenderPass* rootRenderPass; + const CCRenderPass* currentRenderPass; + const CCScopedTexture* currentTexture; + + FloatRect rootDamageRect; + + WebKit::WebTransformationMatrix projectionMatrix; + WebKit::WebTransformationMatrix windowMatrix; + bool flippedY; + FloatRect scissorRectInRenderPassSpace; + }; + + class CachedTexture : public CCScopedTexture { + public: + static scoped_ptr<CachedTexture> create(CCResourceProvider* resourceProvider) { + return make_scoped_ptr(new CachedTexture(resourceProvider)); + } + virtual ~CachedTexture() {} + + bool isComplete() const { return m_isComplete; } + void setIsComplete(bool isComplete) { m_isComplete = isComplete; } + + protected: + explicit CachedTexture(CCResourceProvider* resourceProvider) + : CCScopedTexture(resourceProvider) + , m_isComplete(false) + { + } + + private: + bool m_isComplete; + + DISALLOW_COPY_AND_ASSIGN(CachedTexture); + }; + + static FloatRect quadVertexRect(); + static void quadRectTransform(WebKit::WebTransformationMatrix* quadRectTransform, const WebKit::WebTransformationMatrix& quadTransform, const FloatRect& quadRect); + static void initializeMatrices(DrawingFrame&, const IntRect& drawRect, bool flipY); + static IntRect moveScissorToWindowSpace(const DrawingFrame&, FloatRect scissorRect); + + bool haveCachedResources(CCRenderPass::Id) const; + static IntSize renderPassTextureSize(const CCRenderPass*); + static GC3Denum renderPassTextureFormat(const CCRenderPass*); + + void drawRenderPass(DrawingFrame&, const CCRenderPass*); + bool useRenderPass(DrawingFrame&, const CCRenderPass*); + + virtual void bindFramebufferToOutputSurface(DrawingFrame&) = 0; + virtual bool bindFramebufferToTexture(DrawingFrame&, const CCScopedTexture*, const IntRect& framebufferRect) = 0; + virtual void setDrawViewportSize(const IntSize&) = 0; + virtual void enableScissorTestRect(const IntRect& scissorRect) = 0; + virtual void disableScissorTest() = 0; + virtual void clearFramebuffer(DrawingFrame&) = 0; + virtual void drawQuad(DrawingFrame&, const CCDrawQuad*) = 0; + virtual void beginDrawingFrame(DrawingFrame&) = 0; + virtual void finishDrawingFrame(DrawingFrame&) = 0; + virtual bool flippedFramebuffer() const = 0; + + ScopedPtrHashMap<CCRenderPass::Id, CachedTexture> m_renderPassTextures; + CCResourceProvider* m_resourceProvider; + +private: + DISALLOW_COPY_AND_ASSIGN(CCDirectRenderer); +}; + +} // namespace cc + +#endif // CCDirectRenderer_h |