OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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_ |
OLD | NEW |