| Index: cc/output/gl_renderer.h
|
| diff --git a/cc/output/gl_renderer.h b/cc/output/gl_renderer.h
|
| index 75a5d6e720e76572268f2a7b5e32570c24647d83..bba583232c694bc8cae9f72d6e55ca1dd0fd1a19 100644
|
| --- a/cc/output/gl_renderer.h
|
| +++ b/cc/output/gl_renderer.h
|
| @@ -143,12 +143,23 @@ class CC_EXPORT GLRenderer : public DirectRenderer {
|
| const CheckerboardDrawQuad* quad);
|
| void DrawDebugBorderQuad(const DrawingFrame* frame,
|
| const DebugBorderDrawQuad* quad);
|
| + static bool ShouldApplyBackgroundFilters(DrawingFrame* frame,
|
| + const RenderPassDrawQuad* quad);
|
| + static bool ShouldApplyBlendModeUsingShaders(const DrawQuad* quad);
|
| + static bool ShouldApplyBlendModeUsingBlendFunc(const DrawQuad* quad);
|
| + void ApplyBlendModeUsingBlendFunc(const DrawQuad* quad);
|
| + void RestoreBlendFuncToDefault(const DrawQuad* quad);
|
| + gfx::Rect GetBackdropBoundingBox(
|
| + DrawingFrame* frame,
|
| + const RenderPassDrawQuad* quad,
|
| + const gfx::Transform& contents_device_transform);
|
| + scoped_ptr<ScopedResource> GetBackdrop(const gfx::Rect& bounding_rect);
|
| scoped_ptr<ScopedResource> GetBackgroundWithFilters(
|
| DrawingFrame* frame,
|
| const RenderPassDrawQuad* quad,
|
| - const gfx::Transform& contents_device_transform,
|
| const gfx::Transform& contents_device_transformInverse,
|
| - bool* background_changed);
|
| + const ScopedResource* backdrop_texture,
|
| + const gfx::Rect& backdrop_bounding_rect);
|
| void DrawRenderPassQuad(DrawingFrame* frame, const RenderPassDrawQuad* quad);
|
| void DrawSolidColorQuad(const DrawingFrame* frame,
|
| const SolidColorDrawQuad* quad);
|
| @@ -254,26 +265,30 @@ class CC_EXPORT GLRenderer : public DirectRenderer {
|
| NonPremultipliedTextureBackgroundProgram;
|
|
|
| // Render surface shaders.
|
| - typedef ProgramBinding<VertexShaderPosTexTransform,
|
| - FragmentShaderRGBATexAlpha> RenderPassProgram;
|
| - typedef ProgramBinding<VertexShaderPosTexTransform,
|
| - FragmentShaderRGBATexAlphaMask> RenderPassMaskProgram;
|
| - typedef ProgramBinding<VertexShaderQuadTexTransformAA,
|
| - FragmentShaderRGBATexAlphaAA> RenderPassProgramAA;
|
| - typedef ProgramBinding<VertexShaderQuadTexTransformAA,
|
| - FragmentShaderRGBATexAlphaMaskAA>
|
| + typedef ProgramBindingWithBlendMode<VertexShaderPosTexTransform,
|
| + FragmentShaderRGBATexAlpha>
|
| + RenderPassProgram;
|
| + typedef ProgramBindingWithBlendMode<VertexShaderPosTexTransform,
|
| + FragmentShaderRGBATexAlphaMask>
|
| + RenderPassMaskProgram;
|
| + typedef ProgramBindingWithBlendMode<VertexShaderQuadTexTransformAA,
|
| + FragmentShaderRGBATexAlphaAA>
|
| + RenderPassProgramAA;
|
| + typedef ProgramBindingWithBlendMode<VertexShaderQuadTexTransformAA,
|
| + FragmentShaderRGBATexAlphaMaskAA>
|
| RenderPassMaskProgramAA;
|
| - typedef ProgramBinding<VertexShaderPosTexTransform,
|
| - FragmentShaderRGBATexColorMatrixAlpha>
|
| + typedef ProgramBindingWithBlendMode<VertexShaderPosTexTransform,
|
| + FragmentShaderRGBATexColorMatrixAlpha>
|
| RenderPassColorMatrixProgram;
|
| - typedef ProgramBinding<VertexShaderQuadTexTransformAA,
|
| - FragmentShaderRGBATexAlphaMaskColorMatrixAA>
|
| + typedef ProgramBindingWithBlendMode<
|
| + VertexShaderQuadTexTransformAA,
|
| + FragmentShaderRGBATexAlphaMaskColorMatrixAA>
|
| RenderPassMaskColorMatrixProgramAA;
|
| - typedef ProgramBinding<VertexShaderQuadTexTransformAA,
|
| - FragmentShaderRGBATexAlphaColorMatrixAA>
|
| + typedef ProgramBindingWithBlendMode<VertexShaderQuadTexTransformAA,
|
| + FragmentShaderRGBATexAlphaColorMatrixAA>
|
| RenderPassColorMatrixProgramAA;
|
| - typedef ProgramBinding<VertexShaderPosTexTransform,
|
| - FragmentShaderRGBATexAlphaMaskColorMatrix>
|
| + typedef ProgramBindingWithBlendMode<VertexShaderPosTexTransform,
|
| + FragmentShaderRGBATexAlphaMaskColorMatrix>
|
| RenderPassMaskColorMatrixProgram;
|
|
|
| // Video shaders.
|
| @@ -307,22 +322,32 @@ class CC_EXPORT GLRenderer : public DirectRenderer {
|
|
|
| const TileCheckerboardProgram* GetTileCheckerboardProgram();
|
|
|
| + static int GetBlendModeIndex(SkXfermode::Mode blend_mode);
|
| const RenderPassProgram* GetRenderPassProgram(
|
| - TexCoordPrecision precision);
|
| + TexCoordPrecision precision,
|
| + SkXfermode::Mode = SkXfermode::kSrcOver_Mode);
|
| const RenderPassProgramAA* GetRenderPassProgramAA(
|
| - TexCoordPrecision precision);
|
| + TexCoordPrecision precision,
|
| + SkXfermode::Mode = SkXfermode::kSrcOver_Mode);
|
| const RenderPassMaskProgram* GetRenderPassMaskProgram(
|
| - TexCoordPrecision precision);
|
| + TexCoordPrecision precision,
|
| + SkXfermode::Mode = SkXfermode::kSrcOver_Mode);
|
| const RenderPassMaskProgramAA* GetRenderPassMaskProgramAA(
|
| - TexCoordPrecision precision);
|
| + TexCoordPrecision precision,
|
| + SkXfermode::Mode = SkXfermode::kSrcOver_Mode);
|
| const RenderPassColorMatrixProgram* GetRenderPassColorMatrixProgram(
|
| - TexCoordPrecision precision);
|
| + TexCoordPrecision precision,
|
| + SkXfermode::Mode = SkXfermode::kSrcOver_Mode);
|
| const RenderPassColorMatrixProgramAA* GetRenderPassColorMatrixProgramAA(
|
| - TexCoordPrecision precision);
|
| + TexCoordPrecision precision,
|
| + SkXfermode::Mode = SkXfermode::kSrcOver_Mode);
|
| const RenderPassMaskColorMatrixProgram* GetRenderPassMaskColorMatrixProgram(
|
| - TexCoordPrecision precision);
|
| + TexCoordPrecision precision,
|
| + SkXfermode::Mode = SkXfermode::kSrcOver_Mode);
|
| const RenderPassMaskColorMatrixProgramAA*
|
| - GetRenderPassMaskColorMatrixProgramAA(TexCoordPrecision precision);
|
| + GetRenderPassMaskColorMatrixProgramAA(
|
| + TexCoordPrecision precision,
|
| + SkXfermode::Mode = SkXfermode::kSrcOver_Mode);
|
|
|
| const TextureProgram* GetTextureProgram(
|
| TexCoordPrecision precision);
|
| @@ -367,18 +392,22 @@ class CC_EXPORT GLRenderer : public DirectRenderer {
|
| nonpremultiplied_texture_background_program_[NumTexCoordPrecisions];
|
| TextureProgram texture_io_surface_program_[NumTexCoordPrecisions];
|
|
|
| - RenderPassProgram render_pass_program_[NumTexCoordPrecisions];
|
| - RenderPassProgramAA render_pass_program_aa_[NumTexCoordPrecisions];
|
| - RenderPassMaskProgram render_pass_mask_program_[NumTexCoordPrecisions];
|
| - RenderPassMaskProgramAA render_pass_mask_program_aa_[NumTexCoordPrecisions];
|
| + static const int kNumBlendModes = 16;
|
| + RenderPassProgram render_pass_program_[kNumBlendModes][NumTexCoordPrecisions];
|
| + RenderPassProgramAA
|
| + render_pass_program_aa_[kNumBlendModes][NumTexCoordPrecisions];
|
| + RenderPassMaskProgram
|
| + render_pass_mask_program_[kNumBlendModes][NumTexCoordPrecisions];
|
| + RenderPassMaskProgramAA
|
| + render_pass_mask_program_aa_[kNumBlendModes][NumTexCoordPrecisions];
|
| RenderPassColorMatrixProgram
|
| - render_pass_color_matrix_program_[NumTexCoordPrecisions];
|
| - RenderPassColorMatrixProgramAA
|
| - render_pass_color_matrix_program_aa_[NumTexCoordPrecisions];
|
| - RenderPassMaskColorMatrixProgram
|
| - render_pass_mask_color_matrix_program_[NumTexCoordPrecisions];
|
| - RenderPassMaskColorMatrixProgramAA
|
| - render_pass_mask_color_matrix_program_aa_[NumTexCoordPrecisions];
|
| + render_pass_color_matrix_program_[kNumBlendModes][NumTexCoordPrecisions];
|
| + RenderPassColorMatrixProgramAA render_pass_color_matrix_program_aa_
|
| + [kNumBlendModes][NumTexCoordPrecisions];
|
| + RenderPassMaskColorMatrixProgram render_pass_mask_color_matrix_program_
|
| + [kNumBlendModes][NumTexCoordPrecisions];
|
| + RenderPassMaskColorMatrixProgramAA render_pass_mask_color_matrix_program_aa_
|
| + [kNumBlendModes][NumTexCoordPrecisions];
|
|
|
| VideoYUVProgram video_yuv_program_[NumTexCoordPrecisions];
|
| VideoYUVAProgram video_yuva_program_[NumTexCoordPrecisions];
|
|
|