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

Side by Side Diff: cc/output/gl_renderer.h

Issue 2613903002: The great shader refactor: Move all programs to a common cache (Closed)
Patch Set: Rebase Created 3 years, 11 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 unified diff | Download patch
« no previous file with comments | « no previous file | cc/output/gl_renderer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 The Chromium Authors. All rights reserved. 1 // Copyright 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CC_OUTPUT_GL_RENDERER_H_ 5 #ifndef CC_OUTPUT_GL_RENDERER_H_
6 #define CC_OUTPUT_GL_RENDERER_H_ 6 #define CC_OUTPUT_GL_RENDERER_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 unsigned offscreen_framebuffer_id_; 287 unsigned offscreen_framebuffer_id_;
288 288
289 std::unique_ptr<StaticGeometryBinding> shared_geometry_; 289 std::unique_ptr<StaticGeometryBinding> shared_geometry_;
290 std::unique_ptr<DynamicGeometryBinding> clipped_geometry_; 290 std::unique_ptr<DynamicGeometryBinding> clipped_geometry_;
291 gfx::QuadF shared_geometry_quad_; 291 gfx::QuadF shared_geometry_quad_;
292 292
293 // This block of bindings defines all of the programs used by the compositor 293 // This block of bindings defines all of the programs used by the compositor
294 // itself. Add any new programs here to GLRendererShaderTest. 294 // itself. Add any new programs here to GLRendererShaderTest.
295 295
296 // Tiled layer shaders. 296 // Tiled layer shaders.
297 typedef ProgramBinding<VertexShaderTile, FragmentShaderRGBATexAlpha> 297 typedef Program TileProgram;
298 TileProgram; 298 typedef Program TileProgramAA;
299 typedef ProgramBinding<VertexShaderTileAA, FragmentShaderRGBATexClampAlphaAA> 299 typedef Program TileProgramSwizzleAA;
300 TileProgramAA; 300 typedef Program TileProgramOpaque;
301 typedef ProgramBinding<VertexShaderTileAA, 301 typedef Program TileProgramSwizzle;
302 FragmentShaderRGBATexClampSwizzleAlphaAA> 302 typedef Program TileProgramSwizzleOpaque;
303 TileProgramSwizzleAA;
304 typedef ProgramBinding<VertexShaderTile, FragmentShaderRGBATexOpaque>
305 TileProgramOpaque;
306 typedef ProgramBinding<VertexShaderTile, FragmentShaderRGBATexSwizzleAlpha>
307 TileProgramSwizzle;
308 typedef ProgramBinding<VertexShaderTile, FragmentShaderRGBATexSwizzleOpaque>
309 TileProgramSwizzleOpaque;
310 303
311 // Texture shaders. 304 // Texture shaders.
312 typedef ProgramBinding<VertexShaderPosTexTransform, 305 typedef Program TextureProgram;
313 FragmentShaderRGBATexVaryingAlpha> TextureProgram; 306 typedef Program NonPremultipliedTextureProgram;
314 typedef ProgramBinding<VertexShaderPosTexTransform, 307 typedef Program TextureBackgroundProgram;
315 FragmentShaderRGBATexPremultiplyAlpha> 308 typedef Program NonPremultipliedTextureBackgroundProgram;
316 NonPremultipliedTextureProgram;
317 typedef ProgramBinding<VertexShaderPosTexTransform,
318 FragmentShaderTexBackgroundVaryingAlpha>
319 TextureBackgroundProgram;
320 typedef ProgramBinding<VertexShaderPosTexTransform,
321 FragmentShaderTexBackgroundPremultiplyAlpha>
322 NonPremultipliedTextureBackgroundProgram;
323 309
324 // Render surface shaders. 310 // Render surface shaders.
325 typedef ProgramBinding<VertexShaderPosTexTransform, 311 typedef Program RenderPassProgram;
326 FragmentShaderRGBATexAlpha> RenderPassProgram; 312 typedef Program RenderPassMaskProgram;
327 typedef ProgramBinding<VertexShaderPosTexTransform, 313 typedef Program RenderPassProgramAA;
328 FragmentShaderRGBATexAlphaMask> RenderPassMaskProgram; 314 typedef Program RenderPassMaskProgramAA;
329 typedef ProgramBinding<VertexShaderQuadTexTransformAA, 315 typedef Program RenderPassColorMatrixProgram;
330 FragmentShaderRGBATexAlphaAA> RenderPassProgramAA; 316 typedef Program RenderPassMaskColorMatrixProgramAA;
331 typedef ProgramBinding<VertexShaderQuadTexTransformAA, 317 typedef Program RenderPassColorMatrixProgramAA;
332 FragmentShaderRGBATexAlphaMaskAA> 318 typedef Program RenderPassMaskColorMatrixProgram;
333 RenderPassMaskProgramAA;
334 typedef ProgramBinding<VertexShaderPosTexTransform,
335 FragmentShaderRGBATexColorMatrixAlpha>
336 RenderPassColorMatrixProgram;
337 typedef ProgramBinding<VertexShaderQuadTexTransformAA,
338 FragmentShaderRGBATexAlphaMaskColorMatrixAA>
339 RenderPassMaskColorMatrixProgramAA;
340 typedef ProgramBinding<VertexShaderQuadTexTransformAA,
341 FragmentShaderRGBATexAlphaColorMatrixAA>
342 RenderPassColorMatrixProgramAA;
343 typedef ProgramBinding<VertexShaderPosTexTransform,
344 FragmentShaderRGBATexAlphaMaskColorMatrix>
345 RenderPassMaskColorMatrixProgram;
346 319
347 // Video shaders. 320 // Video shaders.
348 typedef ProgramBinding<VertexShaderVideoTransform, FragmentShaderRGBATex> 321 typedef Program VideoStreamTextureProgram;
349 VideoStreamTextureProgram; 322 typedef ProgramBinding<VertexShaderBase, FragmentShaderYUVVideo>
350 typedef ProgramBinding<VertexShaderPosTexYUVStretchOffset, 323 VideoYUVProgram;
351 FragmentShaderYUVVideo> VideoYUVProgram;
352 324
353 // Special purpose / effects shaders. 325 // Special purpose / effects shaders.
354 typedef ProgramBinding<VertexShaderPos, FragmentShaderColor> 326 typedef Program DebugBorderProgram;
355 DebugBorderProgram; 327 typedef Program SolidColorProgram;
356 typedef ProgramBinding<VertexShaderQuad, FragmentShaderColor> 328 typedef Program SolidColorProgramAA;
357 SolidColorProgram; 329
358 typedef ProgramBinding<VertexShaderQuadAA, FragmentShaderColorAA> 330 const Program* GetProgram(const ProgramKey& key);
359 SolidColorProgramAA; 331 const Program* GetProgramForTesting(const ProgramKey& key) const;
enne (OOO) 2017/01/12 18:29:12 I hate to bikeshed on a name, but this was a littl
ccameron 2017/01/12 20:26:05 Mmh, good idea. Renamed and also added the commen
332 std::unordered_map<ProgramKey, std::unique_ptr<Program>, ProgramKeyHash>
333 program_cache_;
360 334
361 const TileProgram* GetTileProgram( 335 const TileProgram* GetTileProgram(
362 TexCoordPrecision precision, SamplerType sampler); 336 TexCoordPrecision precision, SamplerType sampler);
363 const TileProgramOpaque* GetTileProgramOpaque( 337 const TileProgramOpaque* GetTileProgramOpaque(
364 TexCoordPrecision precision, SamplerType sampler); 338 TexCoordPrecision precision, SamplerType sampler);
365 const TileProgramAA* GetTileProgramAA( 339 const TileProgramAA* GetTileProgramAA(
366 TexCoordPrecision precision, SamplerType sampler); 340 TexCoordPrecision precision, SamplerType sampler);
367 const TileProgramSwizzle* GetTileProgramSwizzle( 341 const TileProgramSwizzle* GetTileProgramSwizzle(
368 TexCoordPrecision precision, SamplerType sampler); 342 TexCoordPrecision precision, SamplerType sampler);
369 const TileProgramSwizzleOpaque* GetTileProgramSwizzleOpaque( 343 const TileProgramSwizzleOpaque* GetTileProgramSwizzleOpaque(
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 bool use_alpha_texture, 393 bool use_alpha_texture,
420 bool use_nv12, 394 bool use_nv12,
421 bool use_color_lut); 395 bool use_color_lut);
422 const VideoStreamTextureProgram* GetVideoStreamTextureProgram( 396 const VideoStreamTextureProgram* GetVideoStreamTextureProgram(
423 TexCoordPrecision precision); 397 TexCoordPrecision precision);
424 398
425 const DebugBorderProgram* GetDebugBorderProgram(); 399 const DebugBorderProgram* GetDebugBorderProgram();
426 const SolidColorProgram* GetSolidColorProgram(); 400 const SolidColorProgram* GetSolidColorProgram();
427 const SolidColorProgramAA* GetSolidColorProgramAA(); 401 const SolidColorProgramAA* GetSolidColorProgramAA();
428 402
429 TileProgram
430 tile_program_[LAST_TEX_COORD_PRECISION + 1][LAST_SAMPLER_TYPE + 1];
431 TileProgramOpaque
432 tile_program_opaque_[LAST_TEX_COORD_PRECISION + 1][LAST_SAMPLER_TYPE + 1];
433 TileProgramAA
434 tile_program_aa_[LAST_TEX_COORD_PRECISION + 1][LAST_SAMPLER_TYPE + 1];
435 TileProgramSwizzle tile_program_swizzle_[LAST_TEX_COORD_PRECISION +
436 1][LAST_SAMPLER_TYPE + 1];
437 TileProgramSwizzleOpaque
438 tile_program_swizzle_opaque_[LAST_TEX_COORD_PRECISION +
439 1][LAST_SAMPLER_TYPE + 1];
440 TileProgramSwizzleAA tile_program_swizzle_aa_[LAST_TEX_COORD_PRECISION +
441 1][LAST_SAMPLER_TYPE + 1];
442
443 TextureProgram
444 texture_program_[LAST_TEX_COORD_PRECISION + 1][LAST_SAMPLER_TYPE + 1];
445 NonPremultipliedTextureProgram
446 nonpremultiplied_texture_program_[LAST_TEX_COORD_PRECISION +
447 1][LAST_SAMPLER_TYPE + 1];
448 TextureBackgroundProgram
449 texture_background_program_[LAST_TEX_COORD_PRECISION +
450 1][LAST_SAMPLER_TYPE + 1];
451 NonPremultipliedTextureBackgroundProgram
452 nonpremultiplied_texture_background_program_[LAST_TEX_COORD_PRECISION +
453 1][LAST_SAMPLER_TYPE + 1];
454
455 RenderPassProgram
456 render_pass_program_[LAST_TEX_COORD_PRECISION + 1][LAST_BLEND_MODE + 1];
457 RenderPassProgramAA render_pass_program_aa_[LAST_TEX_COORD_PRECISION +
458 1][LAST_BLEND_MODE + 1];
459 RenderPassMaskProgram
460 render_pass_mask_program_[LAST_TEX_COORD_PRECISION + 1]
461 [LAST_SAMPLER_TYPE + 1]
462 [LAST_BLEND_MODE + 1]
463 [LAST_MASK_VALUE + 1];
464 RenderPassMaskProgramAA
465 render_pass_mask_program_aa_[LAST_TEX_COORD_PRECISION + 1]
466 [LAST_SAMPLER_TYPE + 1]
467 [LAST_BLEND_MODE + 1]
468 [LAST_MASK_VALUE + 1];
469 RenderPassColorMatrixProgram
470 render_pass_color_matrix_program_[LAST_TEX_COORD_PRECISION +
471 1][LAST_BLEND_MODE + 1];
472 RenderPassColorMatrixProgramAA
473 render_pass_color_matrix_program_aa_[LAST_TEX_COORD_PRECISION +
474 1][LAST_BLEND_MODE + 1];
475 RenderPassMaskColorMatrixProgram
476 render_pass_mask_color_matrix_program_[LAST_TEX_COORD_PRECISION + 1]
477 [LAST_SAMPLER_TYPE + 1]
478 [LAST_BLEND_MODE + 1]
479 [LAST_MASK_VALUE + 1];
480 RenderPassMaskColorMatrixProgramAA
481 render_pass_mask_color_matrix_program_aa_[LAST_TEX_COORD_PRECISION + 1]
482 [LAST_SAMPLER_TYPE + 1]
483 [LAST_BLEND_MODE + 1]
484 [LAST_MASK_VALUE + 1];
485
486 VideoYUVProgram video_yuv_program_[LAST_TEX_COORD_PRECISION + 1] 403 VideoYUVProgram video_yuv_program_[LAST_TEX_COORD_PRECISION + 1]
487 [LAST_SAMPLER_TYPE + 1][2][2][2]; 404 [LAST_SAMPLER_TYPE + 1][2][2][2];
488 VideoStreamTextureProgram
489 video_stream_texture_program_[LAST_TEX_COORD_PRECISION + 1];
490
491 DebugBorderProgram debug_border_program_;
492 SolidColorProgram solid_color_program_;
493 SolidColorProgramAA solid_color_program_aa_;
494 405
495 gpu::gles2::GLES2Interface* gl_; 406 gpu::gles2::GLES2Interface* gl_;
496 gpu::ContextSupport* context_support_; 407 gpu::ContextSupport* context_support_;
497 std::unique_ptr<ContextCacheController::ScopedVisibility> context_visibility_; 408 std::unique_ptr<ContextCacheController::ScopedVisibility> context_visibility_;
498 409
499 TextureMailboxDeleter* texture_mailbox_deleter_; 410 TextureMailboxDeleter* texture_mailbox_deleter_;
500 411
501 gfx::Rect swap_buffer_rect_; 412 gfx::Rect swap_buffer_rect_;
502 gfx::Rect scissor_rect_; 413 gfx::Rect scissor_rect_;
503 bool is_using_bind_uniform_; 414 bool is_using_bind_uniform_;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 bool force_drawing_frame_framebuffer_unflipped_ = false; 453 bool force_drawing_frame_framebuffer_unflipped_ = false;
543 454
544 BoundGeometry bound_geometry_; 455 BoundGeometry bound_geometry_;
545 ColorLUTCache color_lut_cache_; 456 ColorLUTCache color_lut_cache_;
546 DISALLOW_COPY_AND_ASSIGN(GLRenderer); 457 DISALLOW_COPY_AND_ASSIGN(GLRenderer);
547 }; 458 };
548 459
549 } // namespace cc 460 } // namespace cc
550 461
551 #endif // CC_OUTPUT_GL_RENDERER_H_ 462 #endif // CC_OUTPUT_GL_RENDERER_H_
OLDNEW
« no previous file with comments | « no previous file | cc/output/gl_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698