Index: cc/gl_renderer.h |
diff --git a/cc/gl_renderer.h b/cc/gl_renderer.h |
deleted file mode 100644 |
index f8651a8ef2e7631e19254a4abfb17d89cb7b40c3..0000000000000000000000000000000000000000 |
--- a/cc/gl_renderer.h |
+++ /dev/null |
@@ -1,340 +0,0 @@ |
-// Copyright 2010 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_GL_RENDERER_H_ |
-#define CC_GL_RENDERER_H_ |
- |
-#include "cc/base/cc_export.h" |
-#include "cc/checkerboard_draw_quad.h" |
-#include "cc/debug_border_draw_quad.h" |
-#include "cc/direct_renderer.h" |
-#include "cc/gl_renderer_draw_cache.h" |
-#include "cc/io_surface_draw_quad.h" |
-#include "cc/render_pass_draw_quad.h" |
-#include "cc/renderer.h" |
-#include "cc/solid_color_draw_quad.h" |
-#include "cc/tile_draw_quad.h" |
-#include "cc/yuv_video_draw_quad.h" |
-#include "third_party/WebKit/Source/Platform/chromium/public/WebGraphicsContext3D.h" |
-#include "third_party/WebKit/Source/Platform/chromium/public/WebGraphicsMemoryAllocation.h" |
-#include "ui/gfx/quad_f.h" |
- |
-namespace cc { |
- |
-class GLRendererShaderTest; |
-class OutputSurface; |
-class ScopedResource; |
-class StreamVideoDrawQuad; |
-class TextureDrawQuad; |
-class GeometryBinding; |
-class ScopedEnsureFramebufferAllocation; |
- |
-// Class that handles drawing of composited render layers using GL. |
-class CC_EXPORT GLRenderer : |
- public DirectRenderer, |
- public NON_EXPORTED_BASE( |
- WebKit::WebGraphicsContext3D:: |
- WebGraphicsSwapBuffersCompleteCallbackCHROMIUM), |
- public NON_EXPORTED_BASE( |
- WebKit::WebGraphicsContext3D:: |
- WebGraphicsMemoryAllocationChangedCallbackCHROMIUM), |
- public NON_EXPORTED_BASE( |
- WebKit::WebGraphicsContext3D::WebGraphicsContextLostCallback) { |
- public: |
- static scoped_ptr<GLRenderer> Create(RendererClient* client, |
- OutputSurface* output_surface, |
- ResourceProvider* resource_provider); |
- |
- virtual ~GLRenderer(); |
- |
- virtual const RendererCapabilities& Capabilities() const OVERRIDE; |
- |
- WebKit::WebGraphicsContext3D* Context(); |
- |
- virtual void ViewportChanged() OVERRIDE; |
- |
- virtual void ReceiveCompositorFrameAck(const CompositorFrameAck& ack) |
- OVERRIDE; |
- |
- // Waits for rendering to finish. |
- virtual void Finish() OVERRIDE; |
- |
- virtual void DoNoOp() OVERRIDE; |
- // Puts backbuffer onscreen. |
- virtual bool SwapBuffers() OVERRIDE; |
- |
- virtual void GetFramebufferPixels(void* pixels, gfx::Rect rect) OVERRIDE; |
- |
- virtual bool IsContextLost() 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; |
- |
- static void DebugGLCall(WebKit::WebGraphicsContext3D* context, |
- const char* command, |
- const char* file, |
- int line); |
- |
- protected: |
- GLRenderer(RendererClient* client, |
- OutputSurface* output_surface, |
- ResourceProvider* resource_provider); |
- |
- bool IsBackbufferDiscarded() const { return is_backbuffer_discarded_; } |
- bool Initialize(); |
- |
- const gfx::QuadF& SharedGeometryQuad() const { return shared_geometry_quad_; } |
- const GeometryBinding* SharedGeometry() const { |
- return shared_geometry_.get(); |
- } |
- |
- bool GetFramebufferTexture(ScopedResource* resource, gfx::Rect device_rect); |
- void ReleaseRenderPassTextures(); |
- |
- virtual void BindFramebufferToOutputSurface(DrawingFrame& frame) OVERRIDE; |
- virtual bool BindFramebufferToTexture(DrawingFrame& frame, |
- const ScopedResource* resource, |
- 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 class DrawQuad*) 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; |
- virtual void FinishDrawingQuadList() OVERRIDE; |
- |
- private: |
- friend class GLRendererShaderTest; |
- |
- static void ToGLMatrix(float* gl_matrix, const gfx::Transform& transform); |
- static ManagedMemoryPolicy::PriorityCutoff PriorityCutoff( |
- WebKit::WebGraphicsMemoryAllocation::PriorityCutoff priority_cutoff); |
- |
- void DrawCheckerboardQuad(const DrawingFrame& frame, |
- const CheckerboardDrawQuad* quad); |
- void DrawDebugBorderQuad(const DrawingFrame& frame, |
- const DebugBorderDrawQuad* quad); |
- scoped_ptr<ScopedResource> DrawBackgroundFilters( |
- DrawingFrame& frame, |
- const RenderPassDrawQuad* quad, |
- const gfx::Transform& contents_device_transform, |
- const gfx::Transform& contents_device_transformInverse); |
- void DrawRenderPassQuad(DrawingFrame& frame, const RenderPassDrawQuad* quad); |
- void DrawSolidColorQuad(const DrawingFrame& frame, |
- const SolidColorDrawQuad* quad); |
- void DrawStreamVideoQuad(const DrawingFrame& frame, |
- const StreamVideoDrawQuad* quad); |
- void DrawTextureQuad(const DrawingFrame& frame, const TextureDrawQuad* quad); |
- void EnqueueTextureQuad(const DrawingFrame& frame, |
- const TextureDrawQuad* quad); |
- void FlushTextureQuadCache(); |
- void DrawIOSurfaceQuad(const DrawingFrame& frame, |
- const IOSurfaceDrawQuad* quad); |
- void DrawTileQuad(const DrawingFrame& frame, const TileDrawQuad* quad); |
- void DrawYUVVideoQuad(const DrawingFrame& frame, |
- const YUVVideoDrawQuad* quad); |
- |
- void SetShaderOpacity(float opacity, int alpha_location); |
- void SetShaderQuadF(const gfx::QuadF& quad, int quad_location); |
- void DrawQuadGeometry(const DrawingFrame& frame, |
- const gfx::Transform& draw_transform, |
- const gfx::RectF& quad_rect, |
- int matrix_location); |
- void SetBlendEnabled(bool enabled); |
- void SetUseProgram(unsigned program); |
- |
- void CopyTextureToFramebuffer(const DrawingFrame& frame, |
- int texture_id, |
- gfx::Rect rect, |
- const gfx::Transform& draw_matrix); |
- |
- // Check if quad needs antialiasing and if so, inflate the quad and |
- // fill edge array for fragment shader. localQuad is set to |
- // inflated quad if antialiasing is required, otherwise it is left |
- // unchanged. edge array is filled with inflated quad's edge data |
- // if antialiasing is required, otherwise it is left unchanged. |
- // Returns true if quad requires antialiasing and false otherwise. |
- bool SetupQuadForAntialiasing(const gfx::Transform& device_transform, |
- const DrawQuad* quad, |
- gfx::QuadF* local_quad, |
- float edge[24]) const; |
- |
- bool UseScopedTexture(DrawingFrame& frame, |
- const ScopedResource* resource, |
- gfx::Rect viewport_rect); |
- |
- bool MakeContextCurrent(); |
- |
- bool InitializeSharedObjects(); |
- void CleanupSharedObjects(); |
- |
- // WebKit:: |
- // WebGraphicsContext3D::WebGraphicsSwapBuffersCompleteCallbackCHROMIUM |
- // implementation. |
- virtual void onSwapBuffersComplete() OVERRIDE; |
- |
- // WebKit:: |
- // WebGraphicsContext3D::WebGraphicsMemoryAllocationChangedCallbackCHROMIUM |
- // implementation. |
- virtual void onMemoryAllocationChanged( |
- WebKit::WebGraphicsMemoryAllocation allocation) OVERRIDE; |
- void DiscardBackbuffer(); |
- void EnsureBackbuffer(); |
- void EnforceMemoryPolicy(); |
- |
- // WebGraphicsContext3D::WebGraphicsContextLostCallback implementation. |
- virtual void onContextLost() OVERRIDE; |
- |
- RendererCapabilities capabilities_; |
- |
- unsigned offscreen_framebuffer_id_; |
- |
- scoped_ptr<GeometryBinding> shared_geometry_; |
- gfx::QuadF shared_geometry_quad_; |
- |
- // This block of bindings defines all of the programs used by the compositor |
- // itself. Add any new programs here to GLRendererShaderTest. |
- |
- // 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<VertexShaderPosTexTransform, |
- FragmentShaderRGBATexAlpha> RenderPassProgram; |
- typedef ProgramBinding<VertexShaderPosTexTransform, |
- FragmentShaderRGBATexAlphaMask> RenderPassMaskProgram; |
- typedef ProgramBinding<VertexShaderQuad, FragmentShaderRGBATexAlphaAA> |
- RenderPassProgramAA; |
- typedef ProgramBinding<VertexShaderQuad, FragmentShaderRGBATexAlphaMaskAA> |
- RenderPassMaskProgramAA; |
- |
- // Texture shaders. |
- typedef ProgramBinding<VertexShaderPosTexTransform, |
- FragmentShaderRGBATexVaryingAlpha> TextureProgram; |
- typedef ProgramBinding<VertexShaderPosTexTransformFlip, |
- FragmentShaderRGBATexVaryingAlpha> TextureProgramFlip; |
- typedef ProgramBinding<VertexShaderPosTexTransform, |
- FragmentShaderRGBATexRectVaryingAlpha> |
- TextureIOSurfaceProgram; |
- |
- // Video shaders. |
- typedef ProgramBinding<VertexShaderVideoTransform, |
- FragmentShaderOESImageExternal> |
- VideoStreamTextureProgram; |
- typedef ProgramBinding<VertexShaderPosTexYUVStretch, FragmentShaderYUVVideo> |
- VideoYUVProgram; |
- |
- // Special purpose / effects shaders. |
- typedef ProgramBinding<VertexShaderPos, FragmentShaderColor> |
- DebugBorderProgram; |
- typedef ProgramBinding<VertexShaderQuad, FragmentShaderColor> |
- SolidColorProgram; |
- typedef ProgramBinding<VertexShaderQuad, FragmentShaderColorAA> |
- SolidColorProgramAA; |
- |
- const TileProgram* GetTileProgram(); |
- const TileProgramOpaque* GetTileProgramOpaque(); |
- const TileProgramAA* GetTileProgramAA(); |
- const TileProgramSwizzle* GetTileProgramSwizzle(); |
- const TileProgramSwizzleOpaque* GetTileProgramSwizzleOpaque(); |
- const TileProgramSwizzleAA* GetTileProgramSwizzleAA(); |
- const TileCheckerboardProgram* GetTileCheckerboardProgram(); |
- |
- const RenderPassProgram* GetRenderPassProgram(); |
- const RenderPassProgramAA* GetRenderPassProgramAA(); |
- const RenderPassMaskProgram* GetRenderPassMaskProgram(); |
- const RenderPassMaskProgramAA* GetRenderPassMaskProgramAA(); |
- |
- const TextureProgram* GetTextureProgram(); |
- const TextureProgramFlip* GetTextureProgramFlip(); |
- const TextureIOSurfaceProgram* GetTextureIOSurfaceProgram(); |
- |
- const VideoYUVProgram* GetVideoYUVProgram(); |
- const VideoStreamTextureProgram* GetVideoStreamTextureProgram(); |
- |
- const DebugBorderProgram* GetDebugBorderProgram(); |
- const SolidColorProgram* GetSolidColorProgram(); |
- const SolidColorProgramAA* GetSolidColorProgramAA(); |
- |
- scoped_ptr<TileProgram> tile_program_; |
- scoped_ptr<TileProgramOpaque> tile_program_opaque_; |
- scoped_ptr<TileProgramAA> tile_program_aa_; |
- scoped_ptr<TileProgramSwizzle> tile_program_swizzle_; |
- scoped_ptr<TileProgramSwizzleOpaque> tile_program_swizzle_opaque_; |
- scoped_ptr<TileProgramSwizzleAA> tile_program_swizzle_aa_; |
- scoped_ptr<TileCheckerboardProgram> tile_checkerboard_program_; |
- |
- scoped_ptr<RenderPassProgram> render_pass_program_; |
- scoped_ptr<RenderPassProgramAA> render_pass_program_aa_; |
- scoped_ptr<RenderPassMaskProgram> render_pass_mask_program_; |
- scoped_ptr<RenderPassMaskProgramAA> render_pass_mask_program_aa_; |
- |
- scoped_ptr<TextureProgram> texture_program_; |
- scoped_ptr<TextureProgramFlip> texture_program_flip_; |
- scoped_ptr<TextureIOSurfaceProgram> texture_io_surface_program_; |
- |
- scoped_ptr<VideoYUVProgram> video_yuv_program_; |
- scoped_ptr<VideoStreamTextureProgram> video_stream_texture_program_; |
- |
- scoped_ptr<DebugBorderProgram> debug_border_program_; |
- scoped_ptr<SolidColorProgram> solid_color_program_; |
- scoped_ptr<SolidColorProgramAA> solid_color_program_aa_; |
- |
- OutputSurface* output_surface_; |
- WebKit::WebGraphicsContext3D* context_; |
- |
- gfx::Rect swap_buffer_rect_; |
- gfx::Rect scissor_rect_; |
- bool is_viewport_changed_; |
- bool is_backbuffer_discarded_; |
- bool discard_backbuffer_when_not_visible_; |
- bool is_using_bind_uniform_; |
- bool visible_; |
- bool is_scissor_enabled_; |
- bool blend_shadow_; |
- unsigned program_shadow_; |
- TexturedQuadDrawCache draw_cache_; |
- |
- scoped_ptr<ResourceProvider::ScopedWriteLockGL> current_framebuffer_lock_; |
- |
- scoped_refptr<ResourceProvider::Fence> last_swap_fence_; |
- |
- DISALLOW_COPY_AND_ASSIGN(GLRenderer); |
-}; |
- |
-// 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, GLRenderer::DebugGLCall (&* context, #x, __FILE__, __LINE__)) |
-#else |
-#define GLC(context, x) (x) |
-#endif |
- |
-} |
- |
-#endif // CC_GL_RENDERER_H_ |