Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3434)

Unified Diff: cc/gl_renderer.h

Issue 12912006: Part 4 of cc/ directory shuffles: output (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_
« no previous file with comments | « cc/gl_frame_data.cc ('k') | cc/gl_renderer.cc » ('j') | content/common/view_messages.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698