| 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 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 439 always_clear = true; | 439 always_clear = true; |
| 440 #endif | 440 #endif |
| 441 if (always_clear || frame->current_render_pass->has_transparent_background) { | 441 if (always_clear || frame->current_render_pass->has_transparent_background) { |
| 442 GLbitfield clear_bits = GL_COLOR_BUFFER_BIT; | 442 GLbitfield clear_bits = GL_COLOR_BUFFER_BIT; |
| 443 if (always_clear) | 443 if (always_clear) |
| 444 clear_bits |= GL_STENCIL_BUFFER_BIT; | 444 clear_bits |= GL_STENCIL_BUFFER_BIT; |
| 445 gl_->Clear(clear_bits); | 445 gl_->Clear(clear_bits); |
| 446 } | 446 } |
| 447 } | 447 } |
| 448 | 448 |
| 449 static ResourceProvider::ResourceId WaitOnResourceSyncPoints( | 449 static ResourceId WaitOnResourceSyncPoints(ResourceProvider* resource_provider, |
| 450 ResourceProvider* resource_provider, | 450 ResourceId resource_id) { |
| 451 ResourceProvider::ResourceId resource_id) { | |
| 452 resource_provider->WaitSyncPointIfNeeded(resource_id); | 451 resource_provider->WaitSyncPointIfNeeded(resource_id); |
| 453 return resource_id; | 452 return resource_id; |
| 454 } | 453 } |
| 455 | 454 |
| 456 void GLRenderer::BeginDrawingFrame(DrawingFrame* frame) { | 455 void GLRenderer::BeginDrawingFrame(DrawingFrame* frame) { |
| 457 TRACE_EVENT0("cc", "GLRenderer::BeginDrawingFrame"); | 456 TRACE_EVENT0("cc", "GLRenderer::BeginDrawingFrame"); |
| 458 | 457 |
| 459 scoped_refptr<ResourceProvider::Fence> read_lock_fence; | 458 scoped_refptr<ResourceProvider::Fence> read_lock_fence; |
| 460 if (use_sync_query_) { | 459 if (use_sync_query_) { |
| 461 // Block until oldest sync query has passed if the number of pending queries | 460 // Block until oldest sync query has passed if the number of pending queries |
| (...skipping 1166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1628 } | 1627 } |
| 1629 | 1628 |
| 1630 void GLRenderer::DrawTileQuad(const DrawingFrame* frame, | 1629 void GLRenderer::DrawTileQuad(const DrawingFrame* frame, |
| 1631 const TileDrawQuad* quad, | 1630 const TileDrawQuad* quad, |
| 1632 const gfx::QuadF* clip_region) { | 1631 const gfx::QuadF* clip_region) { |
| 1633 DrawContentQuad(frame, quad, quad->resource_id, clip_region); | 1632 DrawContentQuad(frame, quad, quad->resource_id, clip_region); |
| 1634 } | 1633 } |
| 1635 | 1634 |
| 1636 void GLRenderer::DrawContentQuad(const DrawingFrame* frame, | 1635 void GLRenderer::DrawContentQuad(const DrawingFrame* frame, |
| 1637 const ContentDrawQuadBase* quad, | 1636 const ContentDrawQuadBase* quad, |
| 1638 ResourceProvider::ResourceId resource_id, | 1637 ResourceId resource_id, |
| 1639 const gfx::QuadF* clip_region) { | 1638 const gfx::QuadF* clip_region) { |
| 1640 gfx::Transform device_transform = | 1639 gfx::Transform device_transform = |
| 1641 frame->window_matrix * frame->projection_matrix * quad->quadTransform(); | 1640 frame->window_matrix * frame->projection_matrix * quad->quadTransform(); |
| 1642 device_transform.FlattenTo2d(); | 1641 device_transform.FlattenTo2d(); |
| 1643 | 1642 |
| 1644 bool use_aa = settings_->allow_antialiasing && | 1643 bool use_aa = settings_->allow_antialiasing && |
| 1645 ShouldAntialiasQuad(device_transform, quad, false); | 1644 ShouldAntialiasQuad(device_transform, quad, false); |
| 1646 | 1645 |
| 1647 // TODO(timav): simplify coordinate transformations in DrawContentQuadAA | 1646 // TODO(timav): simplify coordinate transformations in DrawContentQuadAA |
| 1648 // similar to the way DrawContentQuadNoAA works and then consider | 1647 // similar to the way DrawContentQuadNoAA works and then consider |
| 1649 // combining DrawContentQuadAA and DrawContentQuadNoAA into one method. | 1648 // combining DrawContentQuadAA and DrawContentQuadNoAA into one method. |
| 1650 if (use_aa) | 1649 if (use_aa) |
| 1651 DrawContentQuadAA(frame, quad, resource_id, device_transform, clip_region); | 1650 DrawContentQuadAA(frame, quad, resource_id, device_transform, clip_region); |
| 1652 else | 1651 else |
| 1653 DrawContentQuadNoAA(frame, quad, resource_id, clip_region); | 1652 DrawContentQuadNoAA(frame, quad, resource_id, clip_region); |
| 1654 } | 1653 } |
| 1655 | 1654 |
| 1656 void GLRenderer::DrawContentQuadAA(const DrawingFrame* frame, | 1655 void GLRenderer::DrawContentQuadAA(const DrawingFrame* frame, |
| 1657 const ContentDrawQuadBase* quad, | 1656 const ContentDrawQuadBase* quad, |
| 1658 ResourceProvider::ResourceId resource_id, | 1657 ResourceId resource_id, |
| 1659 const gfx::Transform& device_transform, | 1658 const gfx::Transform& device_transform, |
| 1660 const gfx::QuadF* clip_region) { | 1659 const gfx::QuadF* clip_region) { |
| 1661 if (!device_transform.IsInvertible()) | 1660 if (!device_transform.IsInvertible()) |
| 1662 return; | 1661 return; |
| 1663 | 1662 |
| 1664 gfx::Rect tile_rect = quad->visible_rect; | 1663 gfx::Rect tile_rect = quad->visible_rect; |
| 1665 | 1664 |
| 1666 gfx::RectF tex_coord_rect = MathUtil::ScaleRectProportional( | 1665 gfx::RectF tex_coord_rect = MathUtil::ScaleRectProportional( |
| 1667 quad->tex_coord_rect, quad->rect, tile_rect); | 1666 quad->tex_coord_rect, quad->rect, tile_rect); |
| 1668 float tex_to_geom_scale_x = quad->rect.width() / quad->tex_coord_rect.width(); | 1667 float tex_to_geom_scale_x = quad->rect.width() / quad->tex_coord_rect.width(); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1768 // it. This is why this centered rect is used and not the original quad_rect. | 1767 // it. This is why this centered rect is used and not the original quad_rect. |
| 1769 gfx::RectF centered_rect( | 1768 gfx::RectF centered_rect( |
| 1770 gfx::PointF(-0.5f * tile_rect.width(), -0.5f * tile_rect.height()), | 1769 gfx::PointF(-0.5f * tile_rect.width(), -0.5f * tile_rect.height()), |
| 1771 tile_rect.size()); | 1770 tile_rect.size()); |
| 1772 DrawQuadGeometry( | 1771 DrawQuadGeometry( |
| 1773 frame, quad->quadTransform(), centered_rect, uniforms.matrix_location); | 1772 frame, quad->quadTransform(), centered_rect, uniforms.matrix_location); |
| 1774 } | 1773 } |
| 1775 | 1774 |
| 1776 void GLRenderer::DrawContentQuadNoAA(const DrawingFrame* frame, | 1775 void GLRenderer::DrawContentQuadNoAA(const DrawingFrame* frame, |
| 1777 const ContentDrawQuadBase* quad, | 1776 const ContentDrawQuadBase* quad, |
| 1778 ResourceProvider::ResourceId resource_id, | 1777 ResourceId resource_id, |
| 1779 const gfx::QuadF* clip_region) { | 1778 const gfx::QuadF* clip_region) { |
| 1780 gfx::RectF tex_coord_rect = MathUtil::ScaleRectProportional( | 1779 gfx::RectF tex_coord_rect = MathUtil::ScaleRectProportional( |
| 1781 quad->tex_coord_rect, quad->rect, quad->visible_rect); | 1780 quad->tex_coord_rect, quad->rect, quad->visible_rect); |
| 1782 float tex_to_geom_scale_x = quad->rect.width() / quad->tex_coord_rect.width(); | 1781 float tex_to_geom_scale_x = quad->rect.width() / quad->tex_coord_rect.width(); |
| 1783 float tex_to_geom_scale_y = | 1782 float tex_to_geom_scale_y = |
| 1784 quad->rect.height() / quad->tex_coord_rect.height(); | 1783 quad->rect.height() / quad->tex_coord_rect.height(); |
| 1785 | 1784 |
| 1786 bool scaled = (tex_to_geom_scale_x != 1.f || tex_to_geom_scale_y != 1.f); | 1785 bool scaled = (tex_to_geom_scale_x != 1.f || tex_to_geom_scale_y != 1.f); |
| 1787 GLenum filter = | 1786 GLenum filter = |
| 1788 (scaled || !quad->quadTransform().IsIdentityOrIntegerTranslation()) && | 1787 (scaled || !quad->quadTransform().IsIdentityOrIntegerTranslation()) && |
| (...skipping 1712 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3501 context_support_->ScheduleOverlayPlane( | 3500 context_support_->ScheduleOverlayPlane( |
| 3502 overlay.plane_z_order, | 3501 overlay.plane_z_order, |
| 3503 overlay.transform, | 3502 overlay.transform, |
| 3504 pending_overlay_resources_.back()->texture_id(), | 3503 pending_overlay_resources_.back()->texture_id(), |
| 3505 ToNearestRect(overlay.display_rect), | 3504 ToNearestRect(overlay.display_rect), |
| 3506 overlay.uv_rect); | 3505 overlay.uv_rect); |
| 3507 } | 3506 } |
| 3508 } | 3507 } |
| 3509 | 3508 |
| 3510 } // namespace cc | 3509 } // namespace cc |
| OLD | NEW |