OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 1961 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1972 bool flipped = false; | 1972 bool flipped = false; |
1973 bool nearest_neighbor = false; | 1973 bool nearest_neighbor = false; |
1974 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; | 1974 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; |
1975 | 1975 |
1976 TextureDrawQuad* overlay_quad = | 1976 TextureDrawQuad* overlay_quad = |
1977 root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 1977 root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
1978 overlay_quad->SetNew(root_pass->CreateAndAppendSharedQuadState(), | 1978 overlay_quad->SetNew(root_pass->CreateAndAppendSharedQuadState(), |
1979 viewport_rect, viewport_rect, viewport_rect, resource_id, | 1979 viewport_rect, viewport_rect, viewport_rect, resource_id, |
1980 premultiplied_alpha, gfx::PointF(0, 0), | 1980 premultiplied_alpha, gfx::PointF(0, 0), |
1981 gfx::PointF(1, 1), SK_ColorTRANSPARENT, vertex_opacity, | 1981 gfx::PointF(1, 1), SK_ColorTRANSPARENT, vertex_opacity, |
1982 flipped, nearest_neighbor); | 1982 flipped, nearest_neighbor, false); |
1983 | 1983 |
1984 // DirectRenderer::DrawFrame calls into OverlayProcessor::ProcessForOverlays. | 1984 // DirectRenderer::DrawFrame calls into OverlayProcessor::ProcessForOverlays. |
1985 // Attempt will be called for each strategy in OverlayProcessor. We have | 1985 // Attempt will be called for each strategy in OverlayProcessor. We have |
1986 // added a fake strategy, so checking for Attempt calls checks if there was | 1986 // added a fake strategy, so checking for Attempt calls checks if there was |
1987 // any attempt to overlay, which there shouldn't be. We can't use the quad | 1987 // any attempt to overlay, which there shouldn't be. We can't use the quad |
1988 // list because the render pass is cleaned up by DrawFrame. | 1988 // list because the render pass is cleaned up by DrawFrame. |
1989 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(0); | 1989 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(0); |
1990 EXPECT_CALL(*validator, AllowCALayerOverlays()).Times(0); | 1990 EXPECT_CALL(*validator, AllowCALayerOverlays()).Times(0); |
1991 renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, viewport_rect, | 1991 renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, viewport_rect, |
1992 viewport_rect, false); | 1992 viewport_rect, false); |
1993 Mock::VerifyAndClearExpectations(processor->strategy_); | 1993 Mock::VerifyAndClearExpectations(processor->strategy_); |
1994 Mock::VerifyAndClearExpectations(validator.get()); | 1994 Mock::VerifyAndClearExpectations(validator.get()); |
1995 | 1995 |
1996 // Without a copy request Attempt() should be called once. | 1996 // Without a copy request Attempt() should be called once. |
1997 root_pass = AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 1997 root_pass = AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), |
1998 viewport_rect, gfx::Transform()); | 1998 viewport_rect, gfx::Transform()); |
1999 root_pass->has_transparent_background = false; | 1999 root_pass->has_transparent_background = false; |
2000 | 2000 |
2001 overlay_quad = root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 2001 overlay_quad = root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
2002 overlay_quad->SetNew(root_pass->CreateAndAppendSharedQuadState(), | 2002 overlay_quad->SetNew(root_pass->CreateAndAppendSharedQuadState(), |
2003 viewport_rect, viewport_rect, viewport_rect, resource_id, | 2003 viewport_rect, viewport_rect, viewport_rect, resource_id, |
2004 premultiplied_alpha, gfx::PointF(0, 0), | 2004 premultiplied_alpha, gfx::PointF(0, 0), |
2005 gfx::PointF(1, 1), SK_ColorTRANSPARENT, vertex_opacity, | 2005 gfx::PointF(1, 1), SK_ColorTRANSPARENT, vertex_opacity, |
2006 flipped, nearest_neighbor); | 2006 flipped, nearest_neighbor, false); |
2007 EXPECT_CALL(*validator, AllowCALayerOverlays()) | 2007 EXPECT_CALL(*validator, AllowCALayerOverlays()) |
2008 .Times(1) | 2008 .Times(1) |
2009 .WillOnce(::testing::Return(false)); | 2009 .WillOnce(::testing::Return(false)); |
2010 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(1); | 2010 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(1); |
2011 renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, viewport_rect, | 2011 renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, viewport_rect, |
2012 viewport_rect, false); | 2012 viewport_rect, false); |
2013 | 2013 |
2014 // If the CALayerOverlay path is taken, then the ordinary overlay path should | 2014 // If the CALayerOverlay path is taken, then the ordinary overlay path should |
2015 // not be called. | 2015 // not be called. |
2016 root_pass = AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 2016 root_pass = AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), |
2017 viewport_rect, gfx::Transform()); | 2017 viewport_rect, gfx::Transform()); |
2018 root_pass->has_transparent_background = false; | 2018 root_pass->has_transparent_background = false; |
2019 | 2019 |
2020 overlay_quad = root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 2020 overlay_quad = root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
2021 overlay_quad->SetNew(root_pass->CreateAndAppendSharedQuadState(), | 2021 overlay_quad->SetNew(root_pass->CreateAndAppendSharedQuadState(), |
2022 viewport_rect, viewport_rect, viewport_rect, resource_id, | 2022 viewport_rect, viewport_rect, viewport_rect, resource_id, |
2023 premultiplied_alpha, gfx::PointF(0, 0), | 2023 premultiplied_alpha, gfx::PointF(0, 0), |
2024 gfx::PointF(1, 1), SK_ColorTRANSPARENT, vertex_opacity, | 2024 gfx::PointF(1, 1), SK_ColorTRANSPARENT, vertex_opacity, |
2025 flipped, nearest_neighbor); | 2025 flipped, nearest_neighbor, false); |
2026 EXPECT_CALL(*validator, AllowCALayerOverlays()) | 2026 EXPECT_CALL(*validator, AllowCALayerOverlays()) |
2027 .Times(1) | 2027 .Times(1) |
2028 .WillOnce(::testing::Return(true)); | 2028 .WillOnce(::testing::Return(true)); |
2029 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(0); | 2029 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(0); |
2030 renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, viewport_rect, | 2030 renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, viewport_rect, |
2031 viewport_rect, false); | 2031 viewport_rect, false); |
2032 } | 2032 } |
2033 | 2033 |
2034 class SingleOverlayOnTopProcessor : public OverlayProcessor { | 2034 class SingleOverlayOnTopProcessor : public OverlayProcessor { |
2035 public: | 2035 public: |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2134 gfx::PointF uv_bottom_right(1, 1); | 2134 gfx::PointF uv_bottom_right(1, 1); |
2135 | 2135 |
2136 TextureDrawQuad* overlay_quad = | 2136 TextureDrawQuad* overlay_quad = |
2137 root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 2137 root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
2138 SharedQuadState* shared_state = root_pass->CreateAndAppendSharedQuadState(); | 2138 SharedQuadState* shared_state = root_pass->CreateAndAppendSharedQuadState(); |
2139 shared_state->SetAll(gfx::Transform(), viewport_rect.size(), viewport_rect, | 2139 shared_state->SetAll(gfx::Transform(), viewport_rect.size(), viewport_rect, |
2140 viewport_rect, false, 1, SkXfermode::kSrcOver_Mode, 0); | 2140 viewport_rect, false, 1, SkXfermode::kSrcOver_Mode, 0); |
2141 overlay_quad->SetNew(shared_state, viewport_rect, viewport_rect, | 2141 overlay_quad->SetNew(shared_state, viewport_rect, viewport_rect, |
2142 viewport_rect, resource_id, premultiplied_alpha, | 2142 viewport_rect, resource_id, premultiplied_alpha, |
2143 uv_top_left, uv_bottom_right, SK_ColorTRANSPARENT, | 2143 uv_top_left, uv_bottom_right, SK_ColorTRANSPARENT, |
2144 vertex_opacity, flipped, nearest_neighbor); | 2144 vertex_opacity, flipped, nearest_neighbor, false); |
2145 | 2145 |
2146 // Verify that overlay_quad actually gets turned into an overlay, and even | 2146 // Verify that overlay_quad actually gets turned into an overlay, and even |
2147 // though it's not drawn, that its sync point is waited on. | 2147 // though it's not drawn, that its sync point is waited on. |
2148 EXPECT_CALL(*context, waitSyncToken(MatchesSyncToken(sync_token))).Times(1); | 2148 EXPECT_CALL(*context, waitSyncToken(MatchesSyncToken(sync_token))).Times(1); |
2149 EXPECT_CALL(overlay_scheduler, | 2149 EXPECT_CALL(overlay_scheduler, |
2150 Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _, viewport_rect, | 2150 Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _, viewport_rect, |
2151 BoundingRect(uv_top_left, uv_bottom_right))).Times(1); | 2151 BoundingRect(uv_top_left, uv_bottom_right))).Times(1); |
2152 | 2152 |
2153 renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, viewport_rect, | 2153 renderer.DrawFrame(&render_passes_in_draw_order_, 1.f, viewport_rect, |
2154 viewport_rect, false); | 2154 viewport_rect, false); |
2155 } | 2155 } |
2156 | 2156 |
2157 } // namespace | 2157 } // namespace |
2158 } // namespace cc | 2158 } // namespace cc |
OLD | NEW |