OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/base/scoped_ptr_vector.h" | 5 #include "cc/base/scoped_ptr_vector.h" |
6 #include "cc/output/compositor_frame_metadata.h" | 6 #include "cc/output/compositor_frame_metadata.h" |
7 #include "cc/output/gl_renderer.h" | 7 #include "cc/output/gl_renderer.h" |
8 #include "cc/output/output_surface.h" | 8 #include "cc/output/output_surface.h" |
9 #include "cc/output/output_surface_client.h" | 9 #include "cc/output/output_surface_client.h" |
10 #include "cc/output/overlay_candidate_validator.h" | 10 #include "cc/output/overlay_candidate_validator.h" |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 output_rect, | 145 output_rect, |
146 output_rect, | 146 output_rect, |
147 gfx::Transform(), | 147 gfx::Transform(), |
148 has_transparent_background); | 148 has_transparent_background); |
149 | 149 |
150 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); | 150 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); |
151 shared_state->opacity = 1.f; | 151 shared_state->opacity = 1.f; |
152 return pass.Pass(); | 152 return pass.Pass(); |
153 } | 153 } |
154 | 154 |
155 ResourceProvider::ResourceId CreateResource( | 155 ResourceId CreateResource(ResourceProvider* resource_provider) { |
156 ResourceProvider* resource_provider) { | |
157 unsigned sync_point = 0; | 156 unsigned sync_point = 0; |
158 TextureMailbox mailbox = | 157 TextureMailbox mailbox = |
159 TextureMailbox(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point); | 158 TextureMailbox(gpu::Mailbox::Generate(), GL_TEXTURE_2D, sync_point); |
160 mailbox.set_allow_overlay(true); | 159 mailbox.set_allow_overlay(true); |
161 scoped_ptr<SingleReleaseCallbackImpl> release_callback = | 160 scoped_ptr<SingleReleaseCallbackImpl> release_callback = |
162 SingleReleaseCallbackImpl::Create(base::Bind(&MailboxReleased)); | 161 SingleReleaseCallbackImpl::Create(base::Bind(&MailboxReleased)); |
163 | 162 |
164 return resource_provider->CreateResourceFromTextureMailbox( | 163 return resource_provider->CreateResourceFromTextureMailbox( |
165 mailbox, release_callback.Pass()); | 164 mailbox, release_callback.Pass()); |
166 } | 165 } |
167 | 166 |
168 SolidColorDrawQuad* CreateSolidColorQuadAt( | 167 SolidColorDrawQuad* CreateSolidColorQuadAt( |
169 const SharedQuadState* shared_quad_state, | 168 const SharedQuadState* shared_quad_state, |
170 SkColor color, | 169 SkColor color, |
171 RenderPass* render_pass, | 170 RenderPass* render_pass, |
172 const gfx::Rect& rect) { | 171 const gfx::Rect& rect) { |
173 SolidColorDrawQuad* quad = | 172 SolidColorDrawQuad* quad = |
174 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 173 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
175 quad->SetNew(shared_quad_state, rect, rect, color, false); | 174 quad->SetNew(shared_quad_state, rect, rect, color, false); |
176 return quad; | 175 return quad; |
177 } | 176 } |
178 | 177 |
179 TextureDrawQuad* CreateCandidateQuadAt(ResourceProvider* resource_provider, | 178 TextureDrawQuad* CreateCandidateQuadAt(ResourceProvider* resource_provider, |
180 const SharedQuadState* shared_quad_state, | 179 const SharedQuadState* shared_quad_state, |
181 RenderPass* render_pass, | 180 RenderPass* render_pass, |
182 const gfx::Rect& rect) { | 181 const gfx::Rect& rect) { |
183 ResourceProvider::ResourceId resource_id = CreateResource(resource_provider); | 182 ResourceId resource_id = CreateResource(resource_provider); |
184 bool premultiplied_alpha = false; | 183 bool premultiplied_alpha = false; |
185 bool flipped = false; | 184 bool flipped = false; |
186 bool nearest_neighbor = false; | 185 bool nearest_neighbor = false; |
187 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; | 186 float vertex_opacity[4] = {1.0f, 1.0f, 1.0f, 1.0f}; |
188 | 187 |
189 TextureDrawQuad* overlay_quad = | 188 TextureDrawQuad* overlay_quad = |
190 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 189 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
191 overlay_quad->SetNew(shared_quad_state, | 190 overlay_quad->SetNew(shared_quad_state, |
192 rect, | 191 rect, |
193 rect, | 192 rect, |
194 rect, | 193 rect, |
195 resource_id, | 194 resource_id, |
196 premultiplied_alpha, | 195 premultiplied_alpha, |
197 kUVTopLeft, | 196 kUVTopLeft, |
198 kUVBottomRight, | 197 kUVBottomRight, |
199 SK_ColorTRANSPARENT, | 198 SK_ColorTRANSPARENT, |
200 vertex_opacity, | 199 vertex_opacity, |
201 flipped, | 200 flipped, |
202 nearest_neighbor); | 201 nearest_neighbor); |
203 | 202 |
204 return overlay_quad; | 203 return overlay_quad; |
205 } | 204 } |
206 | 205 |
207 StreamVideoDrawQuad* CreateCandidateVideoQuadAt( | 206 StreamVideoDrawQuad* CreateCandidateVideoQuadAt( |
208 ResourceProvider* resource_provider, | 207 ResourceProvider* resource_provider, |
209 const SharedQuadState* shared_quad_state, | 208 const SharedQuadState* shared_quad_state, |
210 RenderPass* render_pass, | 209 RenderPass* render_pass, |
211 const gfx::Rect& rect, | 210 const gfx::Rect& rect, |
212 const gfx::Transform& transform) { | 211 const gfx::Transform& transform) { |
213 ResourceProvider::ResourceId resource_id = CreateResource(resource_provider); | 212 ResourceId resource_id = CreateResource(resource_provider); |
214 | 213 |
215 StreamVideoDrawQuad* overlay_quad = | 214 StreamVideoDrawQuad* overlay_quad = |
216 render_pass->CreateAndAppendDrawQuad<StreamVideoDrawQuad>(); | 215 render_pass->CreateAndAppendDrawQuad<StreamVideoDrawQuad>(); |
217 overlay_quad->SetNew(shared_quad_state, rect, rect, rect, resource_id, | 216 overlay_quad->SetNew(shared_quad_state, rect, rect, rect, resource_id, |
218 transform); | 217 transform); |
219 | 218 |
220 return overlay_quad; | 219 return overlay_quad; |
221 } | 220 } |
222 | 221 |
223 TextureDrawQuad* CreateFullscreenCandidateQuad( | 222 TextureDrawQuad* CreateFullscreenCandidateQuad( |
(...skipping 873 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1097 | 1096 |
1098 Mock::VerifyAndClearExpectations(renderer_.get()); | 1097 Mock::VerifyAndClearExpectations(renderer_.get()); |
1099 Mock::VerifyAndClearExpectations(&scheduler_); | 1098 Mock::VerifyAndClearExpectations(&scheduler_); |
1100 } | 1099 } |
1101 | 1100 |
1102 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturned) { | 1101 TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturned) { |
1103 bool use_validator = true; | 1102 bool use_validator = true; |
1104 Init(use_validator); | 1103 Init(use_validator); |
1105 renderer_->set_expect_overlays(true); | 1104 renderer_->set_expect_overlays(true); |
1106 | 1105 |
1107 ResourceProvider::ResourceId resource1 = | 1106 ResourceId resource1 = CreateResource(resource_provider_.get()); |
1108 CreateResource(resource_provider_.get()); | 1107 ResourceId resource2 = CreateResource(resource_provider_.get()); |
1109 ResourceProvider::ResourceId resource2 = | |
1110 CreateResource(resource_provider_.get()); | |
1111 | 1108 |
1112 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1109 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
1113 RenderPassList pass_list; | 1110 RenderPassList pass_list; |
1114 pass_list.push_back(pass.Pass()); | 1111 pass_list.push_back(pass.Pass()); |
1115 | 1112 |
1116 DirectRenderer::DrawingFrame frame1; | 1113 DirectRenderer::DrawingFrame frame1; |
1117 frame1.render_passes_in_draw_order = &pass_list; | 1114 frame1.render_passes_in_draw_order = &pass_list; |
1118 frame1.overlay_list.resize(2); | 1115 frame1.overlay_list.resize(2); |
1119 OverlayCandidate& overlay1 = frame1.overlay_list.back(); | 1116 OverlayCandidate& overlay1 = frame1.overlay_list.back(); |
1120 overlay1.resource_id = resource1; | 1117 overlay1.resource_id = resource1; |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1188 renderer_->BeginDrawingFrame(&frame3); | 1185 renderer_->BeginDrawingFrame(&frame3); |
1189 renderer_->FinishDrawingFrame(&frame3); | 1186 renderer_->FinishDrawingFrame(&frame3); |
1190 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1187 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
1191 SwapBuffers(); | 1188 SwapBuffers(); |
1192 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1189 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
1193 Mock::VerifyAndClearExpectations(&scheduler_); | 1190 Mock::VerifyAndClearExpectations(&scheduler_); |
1194 } | 1191 } |
1195 | 1192 |
1196 } // namespace | 1193 } // namespace |
1197 } // namespace cc | 1194 } // namespace cc |
OLD | NEW |