| 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 |