| 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 #include "cc/output/gl_renderer.h" | 5 #include "cc/output/gl_renderer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 507 case DrawQuad::CHECKERBOARD: | 507 case DrawQuad::CHECKERBOARD: |
| 508 DrawCheckerboardQuad(frame, CheckerboardDrawQuad::MaterialCast(quad)); | 508 DrawCheckerboardQuad(frame, CheckerboardDrawQuad::MaterialCast(quad)); |
| 509 break; | 509 break; |
| 510 case DrawQuad::DEBUG_BORDER: | 510 case DrawQuad::DEBUG_BORDER: |
| 511 DrawDebugBorderQuad(frame, DebugBorderDrawQuad::MaterialCast(quad)); | 511 DrawDebugBorderQuad(frame, DebugBorderDrawQuad::MaterialCast(quad)); |
| 512 break; | 512 break; |
| 513 case DrawQuad::IO_SURFACE_CONTENT: | 513 case DrawQuad::IO_SURFACE_CONTENT: |
| 514 DrawIOSurfaceQuad(frame, IOSurfaceDrawQuad::MaterialCast(quad)); | 514 DrawIOSurfaceQuad(frame, IOSurfaceDrawQuad::MaterialCast(quad)); |
| 515 break; | 515 break; |
| 516 case DrawQuad::PICTURE_CONTENT: | 516 case DrawQuad::PICTURE_CONTENT: |
| 517 DrawPictureQuad(frame, PictureDrawQuad::MaterialCast(quad)); | 517 // PictureDrawQuad should only be used for resourceless software draws. |
| 518 NOTREACHED(); |
| 518 break; | 519 break; |
| 519 case DrawQuad::RENDER_PASS: | 520 case DrawQuad::RENDER_PASS: |
| 520 DrawRenderPassQuad(frame, RenderPassDrawQuad::MaterialCast(quad)); | 521 DrawRenderPassQuad(frame, RenderPassDrawQuad::MaterialCast(quad)); |
| 521 break; | 522 break; |
| 522 case DrawQuad::SOLID_COLOR: | 523 case DrawQuad::SOLID_COLOR: |
| 523 DrawSolidColorQuad(frame, SolidColorDrawQuad::MaterialCast(quad)); | 524 DrawSolidColorQuad(frame, SolidColorDrawQuad::MaterialCast(quad)); |
| 524 break; | 525 break; |
| 525 case DrawQuad::STREAM_VIDEO_CONTENT: | 526 case DrawQuad::STREAM_VIDEO_CONTENT: |
| 526 DrawStreamVideoQuad(frame, StreamVideoDrawQuad::MaterialCast(quad)); | 527 DrawStreamVideoQuad(frame, StreamVideoDrawQuad::MaterialCast(quad)); |
| 527 break; | 528 break; |
| (...skipping 1443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1971 GLC(gl_, gl_->Uniform1i(program->fragment_shader().sampler_location(), 0)); | 1972 GLC(gl_, gl_->Uniform1i(program->fragment_shader().sampler_location(), 0)); |
| 1972 | 1973 |
| 1973 SetShaderOpacity(quad->opacity(), | 1974 SetShaderOpacity(quad->opacity(), |
| 1974 program->fragment_shader().alpha_location()); | 1975 program->fragment_shader().alpha_location()); |
| 1975 DrawQuadGeometry(frame, | 1976 DrawQuadGeometry(frame, |
| 1976 quad->quadTransform(), | 1977 quad->quadTransform(), |
| 1977 quad->rect, | 1978 quad->rect, |
| 1978 program->vertex_shader().matrix_location()); | 1979 program->vertex_shader().matrix_location()); |
| 1979 } | 1980 } |
| 1980 | 1981 |
| 1981 void GLRenderer::DrawPictureQuad(const DrawingFrame* frame, | |
| 1982 const PictureDrawQuad* quad) { | |
| 1983 if (on_demand_tile_raster_bitmap_.width() != quad->texture_size.width() || | |
| 1984 on_demand_tile_raster_bitmap_.height() != quad->texture_size.height()) { | |
| 1985 on_demand_tile_raster_bitmap_.allocN32Pixels(quad->texture_size.width(), | |
| 1986 quad->texture_size.height()); | |
| 1987 | |
| 1988 if (on_demand_tile_raster_resource_id_) | |
| 1989 resource_provider_->DeleteResource(on_demand_tile_raster_resource_id_); | |
| 1990 | |
| 1991 on_demand_tile_raster_resource_id_ = resource_provider_->CreateGLTexture( | |
| 1992 quad->texture_size, | |
| 1993 GL_TEXTURE_2D, | |
| 1994 GL_TEXTURE_POOL_UNMANAGED_CHROMIUM, | |
| 1995 GL_CLAMP_TO_EDGE, | |
| 1996 ResourceProvider::TextureHintImmutable, | |
| 1997 quad->texture_format); | |
| 1998 } | |
| 1999 | |
| 2000 SkCanvas canvas(on_demand_tile_raster_bitmap_); | |
| 2001 quad->raster_source->PlaybackToCanvas(&canvas, quad->content_rect, | |
| 2002 quad->contents_scale); | |
| 2003 | |
| 2004 uint8_t* bitmap_pixels = NULL; | |
| 2005 SkBitmap on_demand_tile_raster_bitmap_dest; | |
| 2006 SkColorType colorType = ResourceFormatToSkColorType(quad->texture_format); | |
| 2007 if (on_demand_tile_raster_bitmap_.colorType() != colorType) { | |
| 2008 on_demand_tile_raster_bitmap_.copyTo(&on_demand_tile_raster_bitmap_dest, | |
| 2009 colorType); | |
| 2010 // TODO(kaanb): The GL pipeline assumes a 4-byte alignment for the | |
| 2011 // bitmap data. This check will be removed once crbug.com/293728 is fixed. | |
| 2012 CHECK_EQ(0u, on_demand_tile_raster_bitmap_dest.rowBytes() % 4); | |
| 2013 bitmap_pixels = reinterpret_cast<uint8_t*>( | |
| 2014 on_demand_tile_raster_bitmap_dest.getPixels()); | |
| 2015 } else { | |
| 2016 bitmap_pixels = | |
| 2017 reinterpret_cast<uint8_t*>(on_demand_tile_raster_bitmap_.getPixels()); | |
| 2018 } | |
| 2019 | |
| 2020 resource_provider_->SetPixels(on_demand_tile_raster_resource_id_, | |
| 2021 bitmap_pixels, | |
| 2022 gfx::Rect(quad->texture_size), | |
| 2023 gfx::Rect(quad->texture_size), | |
| 2024 gfx::Vector2d()); | |
| 2025 | |
| 2026 DrawContentQuad(frame, quad, on_demand_tile_raster_resource_id_); | |
| 2027 } | |
| 2028 | |
| 2029 struct TextureProgramBinding { | 1982 struct TextureProgramBinding { |
| 2030 template <class Program> | 1983 template <class Program> |
| 2031 void Set(Program* program) { | 1984 void Set(Program* program) { |
| 2032 DCHECK(program); | 1985 DCHECK(program); |
| 2033 program_id = program->program(); | 1986 program_id = program->program(); |
| 2034 sampler_location = program->fragment_shader().sampler_location(); | 1987 sampler_location = program->fragment_shader().sampler_location(); |
| 2035 matrix_location = program->vertex_shader().matrix_location(); | 1988 matrix_location = program->vertex_shader().matrix_location(); |
| 2036 background_color_location = | 1989 background_color_location = |
| 2037 program->fragment_shader().background_color_location(); | 1990 program->fragment_shader().background_color_location(); |
| 2038 } | 1991 } |
| (...skipping 1267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3306 context_support_->ScheduleOverlayPlane( | 3259 context_support_->ScheduleOverlayPlane( |
| 3307 overlay.plane_z_order, | 3260 overlay.plane_z_order, |
| 3308 overlay.transform, | 3261 overlay.transform, |
| 3309 pending_overlay_resources_.back()->texture_id(), | 3262 pending_overlay_resources_.back()->texture_id(), |
| 3310 overlay.display_rect, | 3263 overlay.display_rect, |
| 3311 overlay.uv_rect); | 3264 overlay.uv_rect); |
| 3312 } | 3265 } |
| 3313 } | 3266 } |
| 3314 | 3267 |
| 3315 } // namespace cc | 3268 } // namespace cc |
| OLD | NEW |