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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "cc/base/region.h" | 10 #include "cc/base/region.h" |
(...skipping 1216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1227 &overlay_list, &ca_layer_list, | 1227 &overlay_list, &ca_layer_list, |
1228 &damage_rect); | 1228 &damage_rect); |
1229 EXPECT_EQ(gfx::Rect(), damage_rect); | 1229 EXPECT_EQ(gfx::Rect(), damage_rect); |
1230 EXPECT_EQ(0U, overlay_list.size()); | 1230 EXPECT_EQ(0U, overlay_list.size()); |
1231 EXPECT_EQ(0U, ca_layer_list.size()); | 1231 EXPECT_EQ(0U, ca_layer_list.size()); |
1232 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); | 1232 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); |
1233 } | 1233 } |
1234 | 1234 |
1235 class OverlayInfoRendererGL : public GLRenderer { | 1235 class OverlayInfoRendererGL : public GLRenderer { |
1236 public: | 1236 public: |
1237 OverlayInfoRendererGL(RendererClient* client, | 1237 OverlayInfoRendererGL(const RendererSettings* settings, |
1238 const RendererSettings* settings, | |
1239 OutputSurface* output_surface, | 1238 OutputSurface* output_surface, |
1240 ResourceProvider* resource_provider) | 1239 ResourceProvider* resource_provider) |
1241 : GLRenderer(client, | 1240 : GLRenderer(settings, output_surface, resource_provider, NULL, 0), |
1242 settings, | |
1243 output_surface, | |
1244 resource_provider, | |
1245 NULL, | |
1246 0), | |
1247 expect_overlays_(false) {} | 1241 expect_overlays_(false) {} |
1248 | 1242 |
1249 MOCK_METHOD3(DoDrawQuad, | 1243 MOCK_METHOD3(DoDrawQuad, |
1250 void(DrawingFrame* frame, | 1244 void(DrawingFrame* frame, |
1251 const DrawQuad* quad, | 1245 const DrawQuad* quad, |
1252 const gfx::QuadF* draw_region)); | 1246 const gfx::QuadF* draw_region)); |
1253 | 1247 |
1254 using GLRenderer::BeginDrawingFrame; | 1248 using GLRenderer::BeginDrawingFrame; |
1255 | 1249 |
1256 void FinishDrawingFrame(DrawingFrame* frame) override { | 1250 void FinishDrawingFrame(DrawingFrame* frame) override { |
1257 GLRenderer::FinishDrawingFrame(frame); | 1251 GLRenderer::FinishDrawingFrame(frame); |
1258 | 1252 |
1259 if (!expect_overlays_) { | 1253 if (!expect_overlays_) { |
1260 EXPECT_EQ(0U, frame->overlay_list.size()); | 1254 EXPECT_EQ(0U, frame->overlay_list.size()); |
1261 return; | 1255 return; |
1262 } | 1256 } |
1263 | 1257 |
1264 ASSERT_EQ(2U, frame->overlay_list.size()); | 1258 ASSERT_EQ(2U, frame->overlay_list.size()); |
1265 EXPECT_GE(frame->overlay_list.back().resource_id, 0U); | 1259 EXPECT_GE(frame->overlay_list.back().resource_id, 0U); |
1266 } | 1260 } |
1267 | 1261 |
1268 void set_expect_overlays(bool expect_overlays) { | 1262 void set_expect_overlays(bool expect_overlays) { |
1269 expect_overlays_ = expect_overlays; | 1263 expect_overlays_ = expect_overlays; |
1270 } | 1264 } |
1271 | 1265 |
1272 private: | 1266 private: |
1273 bool expect_overlays_; | 1267 bool expect_overlays_; |
1274 }; | 1268 }; |
1275 | 1269 |
1276 class FakeRendererClient : public RendererClient { | |
1277 public: | |
1278 // RendererClient methods. | |
1279 void SetFullRootLayerDamage() override {} | |
1280 }; | |
1281 | |
1282 class MockOverlayScheduler { | 1270 class MockOverlayScheduler { |
1283 public: | 1271 public: |
1284 MOCK_METHOD5(Schedule, | 1272 MOCK_METHOD5(Schedule, |
1285 void(int plane_z_order, | 1273 void(int plane_z_order, |
1286 gfx::OverlayTransform plane_transform, | 1274 gfx::OverlayTransform plane_transform, |
1287 unsigned overlay_texture_id, | 1275 unsigned overlay_texture_id, |
1288 const gfx::Rect& display_bounds, | 1276 const gfx::Rect& display_bounds, |
1289 const gfx::RectF& uv_rect)); | 1277 const gfx::RectF& uv_rect)); |
1290 }; | 1278 }; |
1291 | 1279 |
1292 class GLRendererWithOverlaysTest : public testing::Test { | 1280 class GLRendererWithOverlaysTest : public testing::Test { |
1293 protected: | 1281 protected: |
1294 GLRendererWithOverlaysTest() { | 1282 GLRendererWithOverlaysTest() { |
1295 provider_ = TestContextProvider::Create(); | 1283 provider_ = TestContextProvider::Create(); |
1296 output_surface_.reset(new OverlayOutputSurface(provider_)); | 1284 output_surface_.reset(new OverlayOutputSurface(provider_)); |
1297 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 1285 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
1298 resource_provider_ = | 1286 resource_provider_ = |
1299 FakeResourceProvider::Create(output_surface_.get(), nullptr); | 1287 FakeResourceProvider::Create(output_surface_.get(), nullptr); |
1300 | 1288 |
1301 provider_->support()->SetScheduleOverlayPlaneCallback(base::Bind( | 1289 provider_->support()->SetScheduleOverlayPlaneCallback(base::Bind( |
1302 &MockOverlayScheduler::Schedule, base::Unretained(&scheduler_))); | 1290 &MockOverlayScheduler::Schedule, base::Unretained(&scheduler_))); |
1303 } | 1291 } |
1304 | 1292 |
1305 void Init(bool use_validator) { | 1293 void Init(bool use_validator) { |
1306 if (use_validator) | 1294 if (use_validator) |
1307 output_surface_->SetOverlayCandidateValidator(new SingleOverlayValidator); | 1295 output_surface_->SetOverlayCandidateValidator(new SingleOverlayValidator); |
1308 | 1296 |
1309 renderer_ = base::WrapUnique(new OverlayInfoRendererGL( | 1297 renderer_ = base::WrapUnique(new OverlayInfoRendererGL( |
1310 &renderer_client_, &settings_, output_surface_.get(), | 1298 &settings_, output_surface_.get(), resource_provider_.get())); |
1311 resource_provider_.get())); | |
1312 renderer_->SetVisible(true); | 1299 renderer_->SetVisible(true); |
1313 } | 1300 } |
1314 | 1301 |
1315 void DrawFrame(RenderPassList* pass_list, const gfx::Rect& viewport_rect) { | 1302 void DrawFrame(RenderPassList* pass_list, const gfx::Rect& viewport_rect) { |
1316 renderer_->DrawFrame(pass_list, 1.f, gfx::ColorSpace(), viewport_rect, | 1303 renderer_->DrawFrame(pass_list, 1.f, gfx::ColorSpace(), viewport_rect, |
1317 viewport_rect); | 1304 viewport_rect); |
1318 } | 1305 } |
1319 void SwapBuffers() { | 1306 void SwapBuffers() { |
1320 renderer_->SwapBuffers(CompositorFrameMetadata()); | 1307 renderer_->SwapBuffers(CompositorFrameMetadata()); |
1321 output_surface_->OnSwapBuffersComplete(); | 1308 output_surface_->OnSwapBuffersComplete(); |
(...skipping 12 matching lines...) Expand all Loading... |
1334 response.texture = lock.texture_id(); | 1321 response.texture = lock.texture_id(); |
1335 response.in_use = false; | 1322 response.in_use = false; |
1336 gpu::TextureInUseResponses responses; | 1323 gpu::TextureInUseResponses responses; |
1337 responses.push_back(response); | 1324 responses.push_back(response); |
1338 renderer_->DidReceiveTextureInUseResponses(responses); | 1325 renderer_->DidReceiveTextureInUseResponses(responses); |
1339 } | 1326 } |
1340 | 1327 |
1341 RendererSettings settings_; | 1328 RendererSettings settings_; |
1342 FakeOutputSurfaceClient output_surface_client_; | 1329 FakeOutputSurfaceClient output_surface_client_; |
1343 std::unique_ptr<OverlayOutputSurface> output_surface_; | 1330 std::unique_ptr<OverlayOutputSurface> output_surface_; |
1344 FakeRendererClient renderer_client_; | |
1345 std::unique_ptr<ResourceProvider> resource_provider_; | 1331 std::unique_ptr<ResourceProvider> resource_provider_; |
1346 std::unique_ptr<OverlayInfoRendererGL> renderer_; | 1332 std::unique_ptr<OverlayInfoRendererGL> renderer_; |
1347 scoped_refptr<TestContextProvider> provider_; | 1333 scoped_refptr<TestContextProvider> provider_; |
1348 MockOverlayScheduler scheduler_; | 1334 MockOverlayScheduler scheduler_; |
1349 }; | 1335 }; |
1350 | 1336 |
1351 TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) { | 1337 TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) { |
1352 bool use_validator = true; | 1338 bool use_validator = true; |
1353 Init(use_validator); | 1339 Init(use_validator); |
1354 renderer_->set_expect_overlays(true); | 1340 renderer_->set_expect_overlays(true); |
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1858 filters_.Append(FilterOperation::CreateZoomFilter(0.9f, 1)); | 1844 filters_.Append(FilterOperation::CreateZoomFilter(0.9f, 1)); |
1859 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect, | 1845 quad_->SetNew(pass_->shared_quad_state_list.back(), kOverlayRect, |
1860 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(), | 1846 kOverlayRect, render_pass_id_, 0, gfx::Vector2dF(), gfx::Size(), |
1861 filters_, gfx::Vector2dF(1, 1), background_filters_); | 1847 filters_, gfx::Vector2dF(1, 1), background_filters_); |
1862 ProcessForOverlays(); | 1848 ProcessForOverlays(); |
1863 EXPECT_EQ(0U, ca_layer_list_.size()); | 1849 EXPECT_EQ(0U, ca_layer_list_.size()); |
1864 } | 1850 } |
1865 | 1851 |
1866 } // namespace | 1852 } // namespace |
1867 } // namespace cc | 1853 } // namespace cc |
OLD | NEW |