Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Side by Side Diff: cc/layer_tree_host_impl_unittest.cc

Issue 11570027: Adding support for per vertex opacity on textured layer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/heads_up_display_layer_impl.cc ('k') | cc/nine_patch_layer_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/layer_tree_host_impl.h" 5 #include "cc/layer_tree_host_impl.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 2757 matching lines...) Expand 10 before | Expand all | Expand 10 after
2768 }; 2768 };
2769 2769
2770 static inline scoped_ptr<RenderPass> createRenderPassWithResource(ResourceProvid er* provider) 2770 static inline scoped_ptr<RenderPass> createRenderPassWithResource(ResourceProvid er* provider)
2771 { 2771 {
2772 ResourceProvider::ResourceId resourceId = provider->createResource(gfx::Size (1, 1), GL_RGBA, ResourceProvider::TextureUsageAny); 2772 ResourceProvider::ResourceId resourceId = provider->createResource(gfx::Size (1, 1), GL_RGBA, ResourceProvider::TextureUsageAny);
2773 2773
2774 scoped_ptr<TestRenderPass> pass = TestRenderPass::Create(); 2774 scoped_ptr<TestRenderPass> pass = TestRenderPass::Create();
2775 pass->SetNew(RenderPass::Id(1, 1), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), gfx::Transform()); 2775 pass->SetNew(RenderPass::Id(1, 1), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), gfx::Transform());
2776 scoped_ptr<SharedQuadState> sharedState = SharedQuadState::Create(); 2776 scoped_ptr<SharedQuadState> sharedState = SharedQuadState::Create();
2777 sharedState->SetAll(gfx::Transform(), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), false, 1); 2777 sharedState->SetAll(gfx::Transform(), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), false, 1);
2778 const float vertex_opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
2778 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); 2779 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create();
2779 quad->SetNew(sharedState.get(), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1) , resourceId, false, gfx::RectF(0, 0, 1, 1), false); 2780 quad->SetNew(sharedState.get(), gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1) , resourceId, false, gfx::RectF(0, 0, 1, 1), vertex_opacity, false);
2780 2781
2781 pass->AppendSharedQuadState(sharedState.Pass()); 2782 pass->AppendSharedQuadState(sharedState.Pass());
2782 pass->AppendQuad(quad.PassAs<DrawQuad>()); 2783 pass->AppendQuad(quad.PassAs<DrawQuad>());
2783 2784
2784 return pass.PassAs<RenderPass>(); 2785 return pass.PassAs<RenderPass>();
2785 } 2786 }
2786 2787
2787 TEST_P(LayerTreeHostImplTest, dontUseOldResourcesAfterLostOutputSurface) 2788 TEST_P(LayerTreeHostImplTest, dontUseOldResourcesAfterLostOutputSurface)
2788 { 2789 {
2789 int layerId = 1; 2790 int layerId = 1;
(...skipping 1476 matching lines...) Expand 10 before | Expand all | Expand 10 after
4266 isReplica = true; 4267 isReplica = true;
4267 4268
4268 scoped_ptr<TestRenderPass> renderPass = testData.renderPassCache.take(re nderPassId); 4269 scoped_ptr<TestRenderPass> renderPass = testData.renderPassCache.take(re nderPassId);
4269 4270
4270 // Cycle through quad data and create all quads 4271 // Cycle through quad data and create all quads
4271 while (*currentChar && *currentChar != '\n') { 4272 while (*currentChar && *currentChar != '\n') {
4272 if (*currentChar == 's') { 4273 if (*currentChar == 's') {
4273 // Solid color draw quad 4274 // Solid color draw quad
4274 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create (); 4275 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create ();
4275 quad->SetNew(testData.sharedQuadState.get(), gfx::Rect(0, 0, 10, 10), SK_ColorWHITE); 4276 quad->SetNew(testData.sharedQuadState.get(), gfx::Rect(0, 0, 10, 10), SK_ColorWHITE);
4276 4277
4277 renderPass->AppendQuad(quad.PassAs<DrawQuad>()); 4278 renderPass->AppendQuad(quad.PassAs<DrawQuad>());
4278 currentChar++; 4279 currentChar++;
4279 } else if ((*currentChar >= 'A') && (*currentChar <= 'Z')) { 4280 } else if ((*currentChar >= 'A') && (*currentChar <= 'Z')) {
4280 // RenderPass draw quad 4281 // RenderPass draw quad
4281 int layerId = *currentChar; 4282 int layerId = *currentChar;
4282 currentChar++; 4283 currentChar++;
4283 ASSERT_TRUE(currentChar); 4284 ASSERT_TRUE(currentChar);
4284 int index = *currentChar; 4285 int index = *currentChar;
4285 currentChar++; 4286 currentChar++;
4286 RenderPass::Id newRenderPassId = RenderPass::Id(layerId, index); 4287 RenderPass::Id newRenderPassId = RenderPass::Id(layerId, index);
4287 ASSERT_NE(rootRenderPassId, newRenderPassId); 4288 ASSERT_NE(rootRenderPassId, newRenderPassId);
4288 bool hasTexture = false; 4289 bool hasTexture = false;
4289 bool contentsChanged = true; 4290 bool contentsChanged = true;
4290 4291
4291 if (*currentChar == '[') { 4292 if (*currentChar == '[') {
4292 currentChar++; 4293 currentChar++;
4293 while (*currentChar && *currentChar != ']') { 4294 while (*currentChar && *currentChar != ']') {
4294 switch (*currentChar) { 4295 switch (*currentChar) {
4295 case 'c': 4296 case 'c':
4296 contentsChanged = false; 4297 contentsChanged = false;
4297 break; 4298 break;
4298 case 't': 4299 case 't':
4299 hasTexture = true; 4300 hasTexture = true;
4300 break; 4301 break;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
4350 *pos = RenderPassDrawQuad::MaterialCast(currentQuad)->render_pas s_id.layer_id; 4351 *pos = RenderPassDrawQuad::MaterialCast(currentQuad)->render_pas s_id.layer_id;
4351 pos++; 4352 pos++;
4352 *pos = RenderPassDrawQuad::MaterialCast(currentQuad)->render_pas s_id.index; 4353 *pos = RenderPassDrawQuad::MaterialCast(currentQuad)->render_pas s_id.index;
4353 pos++; 4354 pos++;
4354 break; 4355 break;
4355 default: 4356 default:
4356 *pos = 'x'; 4357 *pos = 'x';
4357 pos++; 4358 pos++;
4358 break; 4359 break;
4359 } 4360 }
4360 4361
4361 quadListIterator++; 4362 quadListIterator++;
4362 } 4363 }
4363 *pos = '\n'; 4364 *pos = '\n';
4364 pos++; 4365 pos++;
4365 } 4366 }
4366 *pos = '\0'; 4367 *pos = '\0';
4367 } 4368 }
4368 4369
4369 // Each RenderPassList is represented by a string which describes the configurat ion. 4370 // Each RenderPassList is represented by a string which describes the configurat ion.
4370 // The syntax of the string is as follows: 4371 // The syntax of the string is as follows:
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
4452 "A0ssssB0sss\n" 4453 "A0ssssB0sss\n"
4453 "B0C0\n" 4454 "B0C0\n"
4454 "C0D0\n" 4455 "C0D0\n"
4455 "D0E0\n" 4456 "D0E0\n"
4456 "E0F0\n" 4457 "E0F0\n"
4457 "F0G0\n" 4458 "F0G0\n"
4458 "G0H0\n" 4459 "G0H0\n"
4459 "H0sssI0sss\n" 4460 "H0sssI0sss\n"
4460 "I0J0\n" 4461 "I0J0\n"
4461 "J0ssss\n", 4462 "J0ssss\n",
4462 4463
4463 "R0sssssA0ssss\n" 4464 "R0sssssA0ssss\n"
4464 }, { 4465 }, {
4465 "Wide recursion, remove all", 4466 "Wide recursion, remove all",
4466 "R0A0[ct]B0[ct]C0[ct]D0[ct]E0[ct]F0[ct]G0[ct]H0[ct]I0[ct]J0[ct]\n" 4467 "R0A0[ct]B0[ct]C0[ct]D0[ct]E0[ct]F0[ct]G0[ct]H0[ct]I0[ct]J0[ct]\n"
4467 "A0s\n" 4468 "A0s\n"
4468 "B0s\n" 4469 "B0s\n"
4469 "C0ssss\n" 4470 "C0ssss\n"
4470 "D0ssss\n" 4471 "D0ssss\n"
4471 "E0s\n" 4472 "E0s\n"
4472 "F0\n" 4473 "F0\n"
4473 "G0s\n" 4474 "G0s\n"
4474 "H0s\n" 4475 "H0s\n"
4475 "I0s\n" 4476 "I0s\n"
4476 "J0ssss\n", 4477 "J0ssss\n",
4477 4478
4478 "R0A0B0C0D0E0F0G0H0I0J0\n" 4479 "R0A0B0C0D0E0F0G0H0I0J0\n"
4479 }, { 4480 }, {
4480 "Remove passes regardless of cache state", 4481 "Remove passes regardless of cache state",
4481 "R0ssssA0[ct]sss\n" 4482 "R0ssssA0[ct]sss\n"
4482 "A0sssB0C0s\n" 4483 "A0sssB0C0s\n"
4483 "B0sssD0[c]ssE0[t]F0\n" 4484 "B0sssD0[c]ssE0[t]F0\n"
4484 "E0ssssss\n" 4485 "E0ssssss\n"
4485 "C0G0\n" 4486 "C0G0\n"
4486 "D0sssssss\n" 4487 "D0sssssss\n"
4487 "F0sssssss\n" 4488 "F0sssssss\n"
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
4688 // scrolling model, in both x- and y-directions. 4689 // scrolling model, in both x- and y-directions.
4689 void LayerTreeHostImplTest::pinchZoomPanViewportAndScrollTest(const float device ScaleFactor) 4690 void LayerTreeHostImplTest::pinchZoomPanViewportAndScrollTest(const float device ScaleFactor)
4690 { 4691 {
4691 m_hostImpl->setDeviceScaleFactor(deviceScaleFactor); 4692 m_hostImpl->setDeviceScaleFactor(deviceScaleFactor);
4692 4693
4693 gfx::Size layoutSurfaceSize(10, 20); 4694 gfx::Size layoutSurfaceSize(10, 20);
4694 gfx::Size deviceSurfaceSize(layoutSurfaceSize.width() * static_cast<int>(dev iceScaleFactor), 4695 gfx::Size deviceSurfaceSize(layoutSurfaceSize.width() * static_cast<int>(dev iceScaleFactor),
4695 layoutSurfaceSize.height() * static_cast<int>(de viceScaleFactor)); 4696 layoutSurfaceSize.height() * static_cast<int>(de viceScaleFactor));
4696 float pageScale = 2; 4697 float pageScale = 2;
4697 scoped_ptr<LayerImpl> root = createScrollableLayer(1, layoutSurfaceSize); 4698 scoped_ptr<LayerImpl> root = createScrollableLayer(1, layoutSurfaceSize);
4698 // For this test we want to scrolls to move both the document and the 4699 // For this test we want to scrolls to move both the document and the
4699 // pinchZoomViewport so we can see some scroll component on the implTransfor m. 4700 // pinchZoomViewport so we can see some scroll component on the implTransfor m.
4700 root->setMaxScrollOffset(gfx::Vector2d(3, 4)); 4701 root->setMaxScrollOffset(gfx::Vector2d(3, 4));
4701 m_hostImpl->setRootLayer(root.Pass()); 4702 m_hostImpl->setRootLayer(root.Pass());
4702 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize); 4703 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize);
4703 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); 4704 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale);
4704 initializeRendererAndDrawFrame(); 4705 initializeRendererAndDrawFrame();
4705 4706
4706 // Set new page scale on impl thread by pinching. 4707 // Set new page scale on impl thread by pinching.
4707 m_hostImpl->pinchGestureBegin(); 4708 m_hostImpl->pinchGestureBegin();
4708 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); 4709 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point());
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
4807 // cause both document-scroll and zoomViewport panning. 4808 // cause both document-scroll and zoomViewport panning.
4808 void LayerTreeHostImplTest::pinchZoomPanViewportAndScrollBoundaryTest(const floa t deviceScaleFactor) 4809 void LayerTreeHostImplTest::pinchZoomPanViewportAndScrollBoundaryTest(const floa t deviceScaleFactor)
4809 { 4810 {
4810 m_hostImpl->setDeviceScaleFactor(deviceScaleFactor); 4811 m_hostImpl->setDeviceScaleFactor(deviceScaleFactor);
4811 4812
4812 gfx::Size layoutSurfaceSize(10, 20); 4813 gfx::Size layoutSurfaceSize(10, 20);
4813 gfx::Size deviceSurfaceSize(layoutSurfaceSize.width() * static_cast<int>(dev iceScaleFactor), 4814 gfx::Size deviceSurfaceSize(layoutSurfaceSize.width() * static_cast<int>(dev iceScaleFactor),
4814 layoutSurfaceSize.height() * static_cast<int>(de viceScaleFactor)); 4815 layoutSurfaceSize.height() * static_cast<int>(de viceScaleFactor));
4815 float pageScale = 2; 4816 float pageScale = 2;
4816 scoped_ptr<LayerImpl> root = createScrollableLayer(1, layoutSurfaceSize); 4817 scoped_ptr<LayerImpl> root = createScrollableLayer(1, layoutSurfaceSize);
4817 // For this test we want to scrolls to move both the document and the 4818 // For this test we want to scrolls to move both the document and the
4818 // pinchZoomViewport so we can see some scroll component on the implTransfor m. 4819 // pinchZoomViewport so we can see some scroll component on the implTransfor m.
4819 root->setMaxScrollOffset(gfx::Vector2d(3, 4)); 4820 root->setMaxScrollOffset(gfx::Vector2d(3, 4));
4820 m_hostImpl->setRootLayer(root.Pass()); 4821 m_hostImpl->setRootLayer(root.Pass());
4821 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize); 4822 m_hostImpl->setViewportSize(layoutSurfaceSize, deviceSurfaceSize);
4822 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); 4823 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale);
4823 initializeRendererAndDrawFrame(); 4824 initializeRendererAndDrawFrame();
4824 4825
4825 // Set new page scale on impl thread by pinching. 4826 // Set new page scale on impl thread by pinching.
4826 m_hostImpl->pinchGestureBegin(); 4827 m_hostImpl->pinchGestureBegin();
4827 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); 4828 m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point());
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
4927 gfx::Rect noDamage = gfx::Rect(m_hostImpl->deviceViewportSize()); 4928 gfx::Rect noDamage = gfx::Rect(m_hostImpl->deviceViewportSize());
4928 drawFrameAndTestDamage(noDamage); 4929 drawFrameAndTestDamage(noDamage);
4929 } 4930 }
4930 4931
4931 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests, 4932 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests,
4932 LayerTreeHostImplTest, 4933 LayerTreeHostImplTest,
4933 ::testing::Values(false, true)); 4934 ::testing::Values(false, true));
4934 4935
4935 } // namespace 4936 } // namespace
4936 } // namespace cc 4937 } // namespace cc
OLDNEW
« no previous file with comments | « cc/heads_up_display_layer_impl.cc ('k') | cc/nine_patch_layer_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698