Index: cc/CCRendererGL.h |
diff --git a/cc/CCRendererGL.h b/cc/CCRendererGL.h |
index a5f2c4f056da0f5ff085457d4a0eadf8e4731e3d..a4458d6c793f58398b30a81de939974f1c365373 100644 |
--- a/cc/CCRendererGL.h |
+++ b/cc/CCRendererGL.h |
@@ -1,240 +1,6 @@ |
-// Copyright 2010 The Chromium Authors. All rights reserved. |
+// 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 CCRendererGL_h |
-#define CCRendererGL_h |
- |
-#if USE(ACCELERATED_COMPOSITING) |
- |
-#include "base/basictypes.h" |
-#include "CCCheckerboardDrawQuad.h" |
-#include "CCDebugBorderDrawQuad.h" |
-#include "CCDirectRenderer.h" |
-#include "CCIOSurfaceDrawQuad.h" |
-#include "CCRenderPassDrawQuad.h" |
-#include "CCRenderer.h" |
-#include "CCSolidColorDrawQuad.h" |
-#include "CCStreamVideoDrawQuad.h" |
-#include "CCTextureDrawQuad.h" |
-#include "CCTileDrawQuad.h" |
-#include "CCYUVVideoDrawQuad.h" |
-#include "Extensions3DChromium.h" |
-#include <wtf/PassOwnPtr.h> |
- |
-namespace WebKit { |
-class WebGraphicsContext3D; |
-} |
- |
-namespace cc { |
- |
-class CCScopedTexture; |
-class GeometryBinding; |
-class ScopedEnsureFramebufferAllocation; |
- |
-// Class that handles drawing of composited render layers using GL. |
-class CCRendererGL : public CCDirectRenderer, |
- public WebKit::WebGraphicsContext3D::WebGraphicsSwapBuffersCompleteCallbackCHROMIUM, |
- public WebKit::WebGraphicsContext3D::WebGraphicsMemoryAllocationChangedCallbackCHROMIUM , |
- public WebKit::WebGraphicsContext3D::WebGraphicsContextLostCallback { |
-public: |
- static PassOwnPtr<CCRendererGL> create(CCRendererClient*, CCResourceProvider*); |
- |
- virtual ~CCRendererGL(); |
- |
- virtual const RendererCapabilities& capabilities() const OVERRIDE; |
- |
- WebKit::WebGraphicsContext3D* context(); |
- |
- virtual void viewportChanged() OVERRIDE; |
- |
- const FloatQuad& sharedGeometryQuad() const { return m_sharedGeometryQuad; } |
- |
- // waits for rendering to finish |
- virtual void finish() OVERRIDE; |
- |
- virtual void doNoOp() OVERRIDE; |
- // puts backbuffer onscreen |
- virtual bool swapBuffers() OVERRIDE; |
- |
- static void debugGLCall(WebKit::WebGraphicsContext3D*, const char* command, const char* file, int line); |
- |
- const GeometryBinding* sharedGeometry() const { return m_sharedGeometry.get(); } |
- |
- virtual void getFramebufferPixels(void *pixels, const IntRect&) OVERRIDE; |
- bool getFramebufferTexture(CCScopedTexture*, const IntRect& deviceRect); |
- |
- virtual bool isContextLost() OVERRIDE; |
- |
- virtual void setVisible(bool) OVERRIDE; |
- |
-protected: |
- CCRendererGL(CCRendererClient*, CCResourceProvider*); |
- |
- bool isFramebufferDiscarded() const { return m_isFramebufferDiscarded; } |
- bool initialize(); |
- |
- void releaseRenderPassTextures(); |
- |
- virtual void bindFramebufferToOutputSurface(DrawingFrame&) OVERRIDE; |
- virtual bool bindFramebufferToTexture(DrawingFrame&, const CCScopedTexture*, const IntRect& framebufferRect) OVERRIDE; |
- virtual void setDrawViewportSize(const IntSize&) OVERRIDE; |
- virtual void enableScissorTestRect(const IntRect& scissorRect) OVERRIDE; |
- virtual void disableScissorTest() OVERRIDE; |
- virtual void clearFramebuffer(DrawingFrame&) OVERRIDE; |
- virtual void drawQuad(DrawingFrame&, const CCDrawQuad*) OVERRIDE; |
- virtual void beginDrawingFrame(DrawingFrame&) OVERRIDE; |
- virtual void finishDrawingFrame(DrawingFrame&) OVERRIDE; |
- virtual bool flippedFramebuffer() const OVERRIDE; |
- |
-private: |
- static void toGLMatrix(float*, const WebKit::WebTransformationMatrix&); |
- |
- void drawCheckerboardQuad(const DrawingFrame&, const CCCheckerboardDrawQuad*); |
- void drawDebugBorderQuad(const DrawingFrame&, const CCDebugBorderDrawQuad*); |
- PassOwnPtr<CCScopedTexture> drawBackgroundFilters(DrawingFrame&, const CCRenderPassDrawQuad*, const WebKit::WebFilterOperations&, const WebKit::WebTransformationMatrix& deviceTransform); |
- void drawRenderPassQuad(DrawingFrame&, const CCRenderPassDrawQuad*); |
- void drawSolidColorQuad(const DrawingFrame&, const CCSolidColorDrawQuad*); |
- void drawStreamVideoQuad(const DrawingFrame&, const CCStreamVideoDrawQuad*); |
- void drawTextureQuad(const DrawingFrame&, const CCTextureDrawQuad*); |
- void drawIOSurfaceQuad(const DrawingFrame&, const CCIOSurfaceDrawQuad*); |
- void drawTileQuad(const DrawingFrame&, const CCTileDrawQuad*); |
- void drawYUVVideoQuad(const DrawingFrame&, const CCYUVVideoDrawQuad*); |
- |
- void setShaderOpacity(float opacity, int alphaLocation); |
- void setShaderFloatQuad(const FloatQuad&, int quadLocation); |
- void drawQuadGeometry(const DrawingFrame&, const WebKit::WebTransformationMatrix& drawTransform, const FloatRect& quadRect, int matrixLocation); |
- |
- void copyTextureToFramebuffer(const DrawingFrame&, int textureId, const IntRect&, const WebKit::WebTransformationMatrix& drawMatrix); |
- |
- bool useScopedTexture(DrawingFrame&, const CCScopedTexture*, const IntRect& viewportRect); |
- |
- bool makeContextCurrent(); |
- |
- bool initializeSharedObjects(); |
- void cleanupSharedObjects(); |
- |
- // WebKit::WebGraphicsContext3D::WebGraphicsSwapBuffersCompleteCallbackCHROMIUM implementation. |
- virtual void onSwapBuffersComplete() OVERRIDE; |
- |
- // WebKit::WebGraphicsContext3D::WebGraphicsMemoryAllocationChangedCallbackCHROMIUM implementation. |
- virtual void onMemoryAllocationChanged(WebKit::WebGraphicsMemoryAllocation) OVERRIDE; |
- void onMemoryAllocationChangedOnImplThread(WebKit::WebGraphicsMemoryAllocation); |
- void discardFramebuffer(); |
- void ensureFramebuffer(); |
- |
- // WebGraphicsContext3D::WebGraphicsContextLostCallback implementation. |
- virtual void onContextLost() OVERRIDE; |
- |
- RendererCapabilities m_capabilities; |
- |
- unsigned m_offscreenFramebufferId; |
- |
- OwnPtr<GeometryBinding> m_sharedGeometry; |
- FloatQuad m_sharedGeometryQuad; |
- |
- // This block of bindings defines all of the programs used by the compositor itself. |
- |
- // Tiled layer shaders. |
- typedef ProgramBinding<VertexShaderTile, FragmentShaderRGBATexAlpha> TileProgram; |
- typedef ProgramBinding<VertexShaderTile, FragmentShaderRGBATexClampAlphaAA> TileProgramAA; |
- typedef ProgramBinding<VertexShaderTile, FragmentShaderRGBATexClampSwizzleAlphaAA> TileProgramSwizzleAA; |
- typedef ProgramBinding<VertexShaderTile, FragmentShaderRGBATexOpaque> TileProgramOpaque; |
- typedef ProgramBinding<VertexShaderTile, FragmentShaderRGBATexSwizzleAlpha> TileProgramSwizzle; |
- typedef ProgramBinding<VertexShaderTile, FragmentShaderRGBATexSwizzleOpaque> TileProgramSwizzleOpaque; |
- typedef ProgramBinding<VertexShaderPosTex, FragmentShaderCheckerboard> TileCheckerboardProgram; |
- |
- // Render surface shaders. |
- typedef ProgramBinding<VertexShaderPosTex, FragmentShaderRGBATexAlpha> RenderPassProgram; |
- typedef ProgramBinding<VertexShaderPosTex, FragmentShaderRGBATexAlphaMask> RenderPassMaskProgram; |
- typedef ProgramBinding<VertexShaderQuad, FragmentShaderRGBATexAlphaAA> RenderPassProgramAA; |
- typedef ProgramBinding<VertexShaderQuad, FragmentShaderRGBATexAlphaMaskAA> RenderPassMaskProgramAA; |
- |
- // Texture shaders. |
- typedef ProgramBinding<VertexShaderPosTexTransform, FragmentShaderRGBATexAlpha> TextureProgram; |
- typedef ProgramBinding<VertexShaderPosTexTransform, FragmentShaderRGBATexFlipAlpha> TextureProgramFlip; |
- typedef ProgramBinding<VertexShaderPosTexTransform, FragmentShaderRGBATexRectAlpha> TextureIOSurfaceProgram; |
- |
- // Video shaders. |
- typedef ProgramBinding<VertexShaderVideoTransform, FragmentShaderOESImageExternal> VideoStreamTextureProgram; |
- typedef ProgramBinding<VertexShaderPosTexYUVStretch, FragmentShaderYUVVideo> VideoYUVProgram; |
- |
- // Special purpose / effects shaders. |
- typedef ProgramBinding<VertexShaderPos, FragmentShaderColor> SolidColorProgram; |
- |
- const TileProgram* tileProgram(); |
- const TileProgramOpaque* tileProgramOpaque(); |
- const TileProgramAA* tileProgramAA(); |
- const TileProgramSwizzle* tileProgramSwizzle(); |
- const TileProgramSwizzleOpaque* tileProgramSwizzleOpaque(); |
- const TileProgramSwizzleAA* tileProgramSwizzleAA(); |
- const TileCheckerboardProgram* tileCheckerboardProgram(); |
- |
- const RenderPassProgram* renderPassProgram(); |
- const RenderPassProgramAA* renderPassProgramAA(); |
- const RenderPassMaskProgram* renderPassMaskProgram(); |
- const RenderPassMaskProgramAA* renderPassMaskProgramAA(); |
- |
- const TextureProgram* textureProgram(); |
- const TextureProgramFlip* textureProgramFlip(); |
- const TextureIOSurfaceProgram* textureIOSurfaceProgram(); |
- |
- const VideoYUVProgram* videoYUVProgram(); |
- const VideoStreamTextureProgram* videoStreamTextureProgram(); |
- |
- const SolidColorProgram* solidColorProgram(); |
- |
- OwnPtr<TileProgram> m_tileProgram; |
- OwnPtr<TileProgramOpaque> m_tileProgramOpaque; |
- OwnPtr<TileProgramAA> m_tileProgramAA; |
- OwnPtr<TileProgramSwizzle> m_tileProgramSwizzle; |
- OwnPtr<TileProgramSwizzleOpaque> m_tileProgramSwizzleOpaque; |
- OwnPtr<TileProgramSwizzleAA> m_tileProgramSwizzleAA; |
- OwnPtr<TileCheckerboardProgram> m_tileCheckerboardProgram; |
- |
- OwnPtr<RenderPassProgram> m_renderPassProgram; |
- OwnPtr<RenderPassProgramAA> m_renderPassProgramAA; |
- OwnPtr<RenderPassMaskProgram> m_renderPassMaskProgram; |
- OwnPtr<RenderPassMaskProgramAA> m_renderPassMaskProgramAA; |
- |
- OwnPtr<TextureProgram> m_textureProgram; |
- OwnPtr<TextureProgramFlip> m_textureProgramFlip; |
- OwnPtr<TextureIOSurfaceProgram> m_textureIOSurfaceProgram; |
- |
- OwnPtr<VideoYUVProgram> m_videoYUVProgram; |
- OwnPtr<VideoStreamTextureProgram> m_videoStreamTextureProgram; |
- |
- OwnPtr<SolidColorProgram> m_solidColorProgram; |
- |
- WebKit::WebGraphicsContext3D* m_context; |
- |
- IntRect m_swapBufferRect; |
- bool m_isViewportChanged; |
- bool m_isFramebufferDiscarded; |
- bool m_isUsingBindUniform; |
- bool m_visible; |
- |
- OwnPtr<CCResourceProvider::ScopedWriteLockGL> m_currentFramebufferLock; |
- |
- DISALLOW_COPY_AND_ASSIGN(CCRendererGL); |
-}; |
- |
- |
-// Setting DEBUG_GL_CALLS to 1 will call glGetError() after almost every GL |
-// call made by the compositor. Useful for debugging rendering issues but |
-// will significantly degrade performance. |
-#define DEBUG_GL_CALLS 0 |
- |
-#if DEBUG_GL_CALLS && !defined ( NDEBUG ) |
-#define GLC(context, x) (x, CCRendererGL::debugGLCall(&*context, #x, __FILE__, __LINE__)) |
-#else |
-#define GLC(context, x) (x) |
-#endif |
- |
- |
-} |
- |
-#endif // USE(ACCELERATED_COMPOSITING) |
- |
-#endif |
+// Temporary forwarding header |
+#include "cc/gl_renderer.h" |