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

Side by Side Diff: cc/CCLayerTreeHostImplTest.cpp

Issue 10917153: Update cc snapshot to r127918 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 months 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/CCLayerTreeHostImpl.cpp ('k') | cc/CCLayerTreeHostTest.cpp » ('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 "config.h" 5 #include "config.h"
6 6
7 #include "CCLayerTreeHostImpl.h" 7 #include "CCLayerTreeHostImpl.h"
8 8
9 #include "CCAnimationTestCommon.h" 9 #include "CCAnimationTestCommon.h"
10 #include "CCGeometryTestUtils.h" 10 #include "CCGeometryTestUtils.h"
(...skipping 3437 matching lines...) Expand 10 before | Expand all | Expand 10 after
3448 tiler->setBounds(child->contentBounds()); 3448 tiler->setBounds(child->contentBounds());
3449 child->setTilingData(*tiler.get()); 3449 child->setTilingData(*tiler.get());
3450 3450
3451 grandChild->setAnchorPoint(FloatPoint(0, 0)); 3451 grandChild->setAnchorPoint(FloatPoint(0, 0));
3452 grandChild->setPosition(IntPoint(grandChildRect.x(), grandChildRect.y())); 3452 grandChild->setPosition(IntPoint(grandChildRect.x(), grandChildRect.y()));
3453 grandChild->setBounds(IntSize(grandChildRect.width(), grandChildRect.height( ))); 3453 grandChild->setBounds(IntSize(grandChildRect.width(), grandChildRect.height( )));
3454 grandChild->setContentBounds(grandChild->bounds()); 3454 grandChild->setContentBounds(grandChild->bounds());
3455 grandChild->setDrawsContent(true); 3455 grandChild->setDrawsContent(true);
3456 3456
3457 CCTiledLayerImpl* childPtr = child.get(); 3457 CCTiledLayerImpl* childPtr = child.get();
3458 CCRenderPass::Id childPassId(childPtr->id(), 0);
3458 3459
3459 child->addChild(grandChild.release()); 3460 child->addChild(grandChild.release());
3460 root->addChild(child.release()); 3461 root->addChild(child.release());
3461 myHostImpl->setRootLayer(root.release()); 3462 myHostImpl->setRootLayer(root.release());
3462 myHostImpl->setViewportSize(rootRect.size(), rootRect.size()); 3463 myHostImpl->setViewportSize(rootRect.size(), rootRect.size());
3463 3464
3464 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(chil dPtr->id())); 3465 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(chil dPassId));
3465 3466
3466 { 3467 {
3467 CCLayerTreeHostImpl::FrameData frame; 3468 CCLayerTreeHostImpl::FrameData frame;
3468 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3469 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3469 myHostImpl->drawLayers(frame); 3470 myHostImpl->drawLayers(frame);
3470 myHostImpl->didDrawAllLayers(frame); 3471 myHostImpl->didDrawAllLayers(frame);
3471 } 3472 }
3472 3473
3473 // We should have cached textures for surface 2. 3474 // We should have cached textures for surface 2.
3474 EXPECT_TRUE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(child Ptr->id())); 3475 EXPECT_TRUE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(child PassId));
3475 3476
3476 { 3477 {
3477 CCLayerTreeHostImpl::FrameData frame; 3478 CCLayerTreeHostImpl::FrameData frame;
3478 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3479 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3479 myHostImpl->drawLayers(frame); 3480 myHostImpl->drawLayers(frame);
3480 myHostImpl->didDrawAllLayers(frame); 3481 myHostImpl->didDrawAllLayers(frame);
3481 } 3482 }
3482 3483
3483 // We should still have cached textures for surface 2 after drawing with no damage. 3484 // We should still have cached textures for surface 2 after drawing with no damage.
3484 EXPECT_TRUE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(child Ptr->id())); 3485 EXPECT_TRUE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(child PassId));
3485 3486
3486 // Damage a single tile of surface 2. 3487 // Damage a single tile of surface 2.
3487 childPtr->setUpdateRect(IntRect(10, 10, 10, 10)); 3488 childPtr->setUpdateRect(IntRect(10, 10, 10, 10));
3488 3489
3489 { 3490 {
3490 CCLayerTreeHostImpl::FrameData frame; 3491 CCLayerTreeHostImpl::FrameData frame;
3491 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3492 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3492 myHostImpl->drawLayers(frame); 3493 myHostImpl->drawLayers(frame);
3493 myHostImpl->didDrawAllLayers(frame); 3494 myHostImpl->didDrawAllLayers(frame);
3494 } 3495 }
3495 3496
3496 // We should have a cached texture for surface 2 again even though it was da maged. 3497 // We should have a cached texture for surface 2 again even though it was da maged.
3497 EXPECT_TRUE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(child Ptr->id())); 3498 EXPECT_TRUE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(child PassId));
3498 } 3499 }
3499 3500
3500 TEST_F(CCLayerTreeHostImplTest, surfaceTextureCaching) 3501 TEST_F(CCLayerTreeHostImplTest, surfaceTextureCaching)
3501 { 3502 {
3502 CCSettings::setPartialSwapEnabled(true); 3503 CCSettings::setPartialSwapEnabled(true);
3503 3504
3504 CCLayerTreeSettings settings; 3505 CCLayerTreeSettings settings;
3505 settings.minimumOcclusionTrackingSize = IntSize(); 3506 settings.minimumOcclusionTrackingSize = IntSize();
3506 OwnPtr<CCLayerTreeHostImpl> myHostImpl = CCLayerTreeHostImpl::create(setting s, this); 3507 OwnPtr<CCLayerTreeHostImpl> myHostImpl = CCLayerTreeHostImpl::create(setting s, this);
3507 3508
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
3849 3850
3850 RenderPassCacheEntry& operator=(const RenderPassCacheEntry& entry) 3851 RenderPassCacheEntry& operator=(const RenderPassCacheEntry& entry)
3851 { 3852 {
3852 renderPassPtr = entry.renderPassPtr.release(); 3853 renderPassPtr = entry.renderPassPtr.release();
3853 renderPass = entry.renderPass; 3854 renderPass = entry.renderPass;
3854 return *this; 3855 return *this;
3855 } 3856 }
3856 }; 3857 };
3857 3858
3858 struct RenderPassRemovalTestData : public CCLayerTreeHostImpl::FrameData { 3859 struct RenderPassRemovalTestData : public CCLayerTreeHostImpl::FrameData {
3859 std::map<char, RenderPassCacheEntry> renderPassCache; 3860 std::map<CCRenderPass::Id, RenderPassCacheEntry> renderPassCache;
3860 OwnPtr<CCSharedQuadState> sharedQuadState; 3861 OwnPtr<CCSharedQuadState> sharedQuadState;
3861 }; 3862 };
3862 3863
3863 class CCTestRenderPass: public CCRenderPass { 3864 class CCTestRenderPass: public CCRenderPass {
3864 public: 3865 public:
3865 static PassOwnPtr<CCRenderPass> create(int id, IntRect outputRect, const Web TransformationMatrix& rootTransform) { return adoptPtr(new CCTestRenderPass(id, outputRect, rootTransform)); } 3866 static PassOwnPtr<CCRenderPass> create(CCRenderPass::Id id, IntRect outputRe ct, const WebTransformationMatrix& rootTransform) { return adoptPtr(new CCTestRe nderPass(id, outputRect, rootTransform)); }
3866 3867
3867 void appendQuad(PassOwnPtr<CCDrawQuad> quad) { m_quadList.append(quad); } 3868 void appendQuad(PassOwnPtr<CCDrawQuad> quad) { m_quadList.append(quad); }
3868 3869
3869 protected: 3870 protected:
3870 CCTestRenderPass(int id, IntRect outputRect, const WebTransformationMatrix& rootTransform) : CCRenderPass(id, outputRect, rootTransform) { } 3871 CCTestRenderPass(CCRenderPass::Id id, IntRect outputRect, const WebTransform ationMatrix& rootTransform) : CCRenderPass(id, outputRect, rootTransform) { }
3871 }; 3872 };
3872 3873
3873 class CCTestRenderer : public CCRendererGL, public CCRendererClient { 3874 class CCTestRenderer : public CCRendererGL, public CCRendererClient {
3874 public: 3875 public:
3875 static PassOwnPtr<CCTestRenderer> create(CCResourceProvider* resourceProvide r) 3876 static PassOwnPtr<CCTestRenderer> create(CCResourceProvider* resourceProvide r)
3876 { 3877 {
3877 OwnPtr<CCTestRenderer> renderer(adoptPtr(new CCTestRenderer(resourceProv ider))); 3878 OwnPtr<CCTestRenderer> renderer(adoptPtr(new CCTestRenderer(resourceProv ider)));
3878 if (!renderer->initialize()) 3879 if (!renderer->initialize())
3879 return nullptr; 3880 return nullptr;
3880 3881
3881 return renderer.release(); 3882 return renderer.release();
3882 } 3883 }
3883 3884
3884 void clearCachedTextures() { m_textures.clear(); } 3885 void clearCachedTextures() { m_textures.clear(); }
3885 void setHaveCachedResourcesForRenderPassId(int id) { m_textures.add(id); } 3886 void setHaveCachedResourcesForRenderPassId(CCRenderPass::Id id) { m_textures .add(id); }
3886 3887
3887 virtual bool haveCachedResourcesForRenderPassId(int id) const OVERRIDE { ret urn m_textures.contains(id); } 3888 virtual bool haveCachedResourcesForRenderPassId(CCRenderPass::Id id) const O VERRIDE { return m_textures.contains(id); }
3888 3889
3889 // CCRendererClient implementation. 3890 // CCRendererClient implementation.
3890 virtual const IntSize& deviceViewportSize() const OVERRIDE { return m_viewpo rtSize; } 3891 virtual const IntSize& deviceViewportSize() const OVERRIDE { return m_viewpo rtSize; }
3891 virtual const CCLayerTreeSettings& settings() const OVERRIDE { return m_sett ings; } 3892 virtual const CCLayerTreeSettings& settings() const OVERRIDE { return m_sett ings; }
3892 virtual void didLoseContext() OVERRIDE { } 3893 virtual void didLoseContext() OVERRIDE { }
3893 virtual void onSwapBuffersComplete() OVERRIDE { } 3894 virtual void onSwapBuffersComplete() OVERRIDE { }
3894 virtual void setFullRootLayerDamage() OVERRIDE { } 3895 virtual void setFullRootLayerDamage() OVERRIDE { }
3895 virtual void releaseContentsTextures() OVERRIDE { } 3896 virtual void releaseContentsTextures() OVERRIDE { }
3896 virtual void setMemoryAllocationLimitBytes(size_t) OVERRIDE { } 3897 virtual void setMemoryAllocationLimitBytes(size_t) OVERRIDE { }
3897 3898
3898 protected: 3899 protected:
3899 CCTestRenderer(CCResourceProvider* resourceProvider) : CCRendererGL(this, re sourceProvider, UnthrottledUploader) { } 3900 CCTestRenderer(CCResourceProvider* resourceProvider) : CCRendererGL(this, re sourceProvider, UnthrottledUploader) { }
3900 3901
3901 private: 3902 private:
3902 CCLayerTreeSettings m_settings; 3903 CCLayerTreeSettings m_settings;
3903 IntSize m_viewportSize; 3904 IntSize m_viewportSize;
3904 HashSet<int> m_textures; 3905 HashSet<CCRenderPass::Id> m_textures;
3905 }; 3906 };
3906 3907
3907 static void configureRenderPassTestData(const char* testScript, RenderPassRemova lTestData& testData, CCTestRenderer* renderer) 3908 static void configureRenderPassTestData(const char* testScript, RenderPassRemova lTestData& testData, CCTestRenderer* renderer)
3908 { 3909 {
3909 renderer->clearCachedTextures(); 3910 renderer->clearCachedTextures();
3910 3911
3911 // One shared state for all quads - we don't need the correct details 3912 // One shared state for all quads - we don't need the correct details
3912 testData.sharedQuadState = CCSharedQuadState::create(WebTransformationMatrix (), IntRect(), IntRect(), 1.0, true); 3913 testData.sharedQuadState = CCSharedQuadState::create(WebTransformationMatrix (), IntRect(), IntRect(), 1.0, true);
3913 3914
3914 const char* currentChar = testScript; 3915 const char* currentChar = testScript;
3915 3916
3916 // Pre-create root pass 3917 // Pre-create root pass
3917 char rootRenderPassId = testScript[0]; 3918 CCRenderPass::Id rootRenderPassId = CCRenderPass::Id(testScript[0], testScri pt[1]);
3918 OwnPtr<CCRenderPass> rootRenderPass = CCTestRenderPass::create(rootRenderPas sId, IntRect(), WebTransformationMatrix()); 3919 OwnPtr<CCRenderPass> rootRenderPass = CCTestRenderPass::create(rootRenderPas sId, IntRect(), WebTransformationMatrix());
3919 testData.renderPassCache.insert(std::pair<char, RenderPassCacheEntry>(rootRe nderPassId, RenderPassCacheEntry(rootRenderPass.release()))); 3920 testData.renderPassCache.insert(std::pair<CCRenderPass::Id, RenderPassCacheE ntry>(rootRenderPassId, RenderPassCacheEntry(rootRenderPass.release())));
3920 while (*currentChar) { 3921 while (*currentChar) {
3921 char renderPassId = currentChar[0]; 3922 int layerId = *currentChar;
3922 currentChar++; 3923 currentChar++;
3924 ASSERT_TRUE(currentChar);
3925 int index = *currentChar;
3926 currentChar++;
3927
3928 CCRenderPass::Id renderPassId = CCRenderPass::Id(layerId, index);
3923 3929
3924 OwnPtr<CCRenderPass> renderPass; 3930 OwnPtr<CCRenderPass> renderPass;
3925 3931
3926 bool isReplica = false; 3932 bool isReplica = false;
3927 if (!testData.renderPassCache[renderPassId].renderPassPtr.get()) 3933 if (!testData.renderPassCache[renderPassId].renderPassPtr.get())
3928 isReplica = true; 3934 isReplica = true;
3929 3935
3930 renderPass = testData.renderPassCache[renderPassId].renderPassPtr.releas e(); 3936 renderPass = testData.renderPassCache[renderPassId].renderPassPtr.releas e();
3931 3937
3932 // Cycle through quad data and create all quads 3938 // Cycle through quad data and create all quads
3933 while (*currentChar && *currentChar != '\n') { 3939 while (*currentChar && *currentChar != '\n') {
3934 if (*currentChar == 's') { 3940 if (*currentChar == 's') {
3935 // Solid color draw quad 3941 // Solid color draw quad
3936 OwnPtr<CCDrawQuad> quad = CCSolidColorDrawQuad::create(testData. sharedQuadState.get(), IntRect(0, 0, 10, 10), SK_ColorWHITE); 3942 OwnPtr<CCDrawQuad> quad = CCSolidColorDrawQuad::create(testData. sharedQuadState.get(), IntRect(0, 0, 10, 10), SK_ColorWHITE);
3937 3943
3938 static_cast<CCTestRenderPass*>(renderPass.get())->appendQuad(qua d.release()); 3944 static_cast<CCTestRenderPass*>(renderPass.get())->appendQuad(qua d.release());
3939 currentChar++; 3945 currentChar++;
3940 } else if ((*currentChar >= 'A') && (*currentChar <= 'Z')) { 3946 } else if ((*currentChar >= 'A') && (*currentChar <= 'Z')) {
3941 // RenderPass draw quad 3947 // RenderPass draw quad
3942 char newRenderPassId = *currentChar; 3948 int layerId = *currentChar;
3949 currentChar++;
3950 ASSERT_TRUE(currentChar);
3951 int index = *currentChar;
3952 currentChar++;
3953 CCRenderPass::Id newRenderPassId = CCRenderPass::Id(layerId, ind ex);
3943 ASSERT_NE(rootRenderPassId, newRenderPassId); 3954 ASSERT_NE(rootRenderPassId, newRenderPassId);
3944 currentChar++;
3945 bool hasTexture = false; 3955 bool hasTexture = false;
3946 bool contentsChanged = true; 3956 bool contentsChanged = true;
3947 3957
3948 if (*currentChar == '[') { 3958 if (*currentChar == '[') {
3949 currentChar++; 3959 currentChar++;
3950 while (*currentChar && *currentChar != ']') { 3960 while (*currentChar && *currentChar != ']') {
3951 switch (*currentChar) { 3961 switch (*currentChar) {
3952 case 'c': 3962 case 'c':
3953 contentsChanged = false; 3963 contentsChanged = false;
3954 break; 3964 break;
3955 case 't': 3965 case 't':
3956 hasTexture = true; 3966 hasTexture = true;
3957 break; 3967 break;
3958 } 3968 }
3959 currentChar++; 3969 currentChar++;
3960 } 3970 }
3961 if (*currentChar == ']') 3971 if (*currentChar == ']')
3962 currentChar++; 3972 currentChar++;
3963 } 3973 }
3964 3974
3965 if (testData.renderPassCache.find(newRenderPassId) == testData.r enderPassCache.end()) { 3975 if (testData.renderPassCache.find(newRenderPassId) == testData.r enderPassCache.end()) {
3966 if (hasTexture) 3976 if (hasTexture)
3967 renderer->setHaveCachedResourcesForRenderPassId(newRende rPassId); 3977 renderer->setHaveCachedResourcesForRenderPassId(newRende rPassId);
3968 3978
3969 OwnPtr<CCRenderPass> renderPass = CCTestRenderPass::create(n ewRenderPassId, IntRect(), WebTransformationMatrix()); 3979 OwnPtr<CCRenderPass> renderPass = CCTestRenderPass::create(n ewRenderPassId, IntRect(), WebTransformationMatrix());
3970 testData.renderPassCache.insert(std::pair<char, RenderPassCa cheEntry>(newRenderPassId, RenderPassCacheEntry(renderPass.release()))); 3980 testData.renderPassCache.insert(std::pair<CCRenderPass::Id, RenderPassCacheEntry>(newRenderPassId, RenderPassCacheEntry(renderPass.release() )));
3971 } 3981 }
3972 3982
3973 IntRect quadRect = IntRect(0, 0, 1, 1); 3983 IntRect quadRect = IntRect(0, 0, 1, 1);
3974 IntRect contentsChangedRect = contentsChanged ? quadRect : IntRe ct(); 3984 IntRect contentsChangedRect = contentsChanged ? quadRect : IntRe ct();
3975 OwnPtr<CCRenderPassDrawQuad> quad = CCRenderPassDrawQuad::create (testData.sharedQuadState.get(), quadRect, newRenderPassId, isReplica, 1, conten tsChangedRect, 1, 1, 0, 0); 3985 OwnPtr<CCRenderPassDrawQuad> quad = CCRenderPassDrawQuad::create (testData.sharedQuadState.get(), quadRect, newRenderPassId, isReplica, 1, conten tsChangedRect, 1, 1, 0, 0);
3976 static_cast<CCTestRenderPass*>(renderPass.get())->appendQuad(qua d.release()); 3986 static_cast<CCTestRenderPass*>(renderPass.get())->appendQuad(qua d.release());
3977 } 3987 }
3978 } 3988 }
3979 testData.renderPasses.insert(0, renderPass.get()); 3989 testData.renderPasses.insert(0, renderPass.get());
3980 testData.renderPassesById.add(renderPassId, renderPass.release()); 3990 testData.renderPassesById.add(renderPassId, renderPass.release());
3981 if (*currentChar) 3991 if (*currentChar)
3982 currentChar++; 3992 currentChar++;
3983 } 3993 }
3984 } 3994 }
3985 3995
3986 void dumpRenderPassTestData(const RenderPassRemovalTestData& testData, char* buf fer) 3996 void dumpRenderPassTestData(const RenderPassRemovalTestData& testData, char* buf fer)
3987 { 3997 {
3988 char* pos = buffer; 3998 char* pos = buffer;
3989 for (CCRenderPassList::const_reverse_iterator it = testData.renderPasses.rbe gin(); it != testData.renderPasses.rend(); ++it) { 3999 for (CCRenderPassList::const_reverse_iterator it = testData.renderPasses.rbe gin(); it != testData.renderPasses.rend(); ++it) {
3990 const CCRenderPass* currentPass = *it; 4000 const CCRenderPass* currentPass = *it;
3991 *pos = currentPass->id(); 4001 *pos = currentPass->id().layerId;
4002 pos++;
4003 *pos = currentPass->id().index;
3992 pos++; 4004 pos++;
3993 4005
3994 CCQuadList::const_iterator quadListIterator = currentPass->quadList().be gin(); 4006 CCQuadList::const_iterator quadListIterator = currentPass->quadList().be gin();
3995 while (quadListIterator != currentPass->quadList().end()) { 4007 while (quadListIterator != currentPass->quadList().end()) {
3996 CCDrawQuad* currentQuad = (*quadListIterator).get(); 4008 CCDrawQuad* currentQuad = (*quadListIterator).get();
3997 switch (currentQuad->material()) { 4009 switch (currentQuad->material()) {
3998 case CCDrawQuad::SolidColor: 4010 case CCDrawQuad::SolidColor:
3999 *pos = 's'; 4011 *pos = 's';
4000 pos++; 4012 pos++;
4001 break; 4013 break;
4002 case CCDrawQuad::RenderPass: 4014 case CCDrawQuad::RenderPass:
4003 *pos = CCRenderPassDrawQuad::materialCast(currentQuad)->renderPa ssId(); 4015 *pos = CCRenderPassDrawQuad::materialCast(currentQuad)->renderPa ssId().layerId;
4016 pos++;
4017 *pos = CCRenderPassDrawQuad::materialCast(currentQuad)->renderPa ssId().index;
4004 pos++; 4018 pos++;
4005 break; 4019 break;
4006 default: 4020 default:
4007 *pos = 'x'; 4021 *pos = 'x';
4008 pos++; 4022 pos++;
4009 break; 4023 break;
4010 } 4024 }
4011 4025
4012 quadListIterator++; 4026 quadListIterator++;
4013 } 4027 }
(...skipping 23 matching lines...) Expand all
4037 struct TestCase { 4051 struct TestCase {
4038 const char* name; 4052 const char* name;
4039 const char* initScript; 4053 const char* initScript;
4040 const char* expectedResult; 4054 const char* expectedResult;
4041 }; 4055 };
4042 4056
4043 TestCase removeRenderPassesCases[] = 4057 TestCase removeRenderPassesCases[] =
4044 { 4058 {
4045 { 4059 {
4046 "Single root pass", 4060 "Single root pass",
4047 "Rssss\n", 4061 "R0ssss\n",
4048 "Rssss\n" 4062 "R0ssss\n"
4049 }, { 4063 }, {
4050 "Single pass - no quads", 4064 "Single pass - no quads",
4051 "R\n", 4065 "R0\n",
4052 "R\n" 4066 "R0\n"
4053 }, { 4067 }, {
4054 "Two passes, no removal", 4068 "Two passes, no removal",
4055 "RssssAsss\n" 4069 "R0ssssA0sss\n"
4056 "Assss\n", 4070 "A0ssss\n",
4057 "RssssAsss\n" 4071 "R0ssssA0sss\n"
4058 "Assss\n" 4072 "A0ssss\n"
4059 }, { 4073 }, {
4060 "Two passes, remove last", 4074 "Two passes, remove last",
4061 "RssssA[ct]sss\n" 4075 "R0ssssA0[ct]sss\n"
4062 "Assss\n", 4076 "A0ssss\n",
4063 "RssssAsss\n" 4077 "R0ssssA0sss\n"
4064 }, { 4078 }, {
4065 "Have texture but contents changed - leave pass", 4079 "Have texture but contents changed - leave pass",
4066 "RssssA[t]sss\n" 4080 "R0ssssA0[t]sss\n"
4067 "Assss\n", 4081 "A0ssss\n",
4068 "RssssAsss\n" 4082 "R0ssssA0sss\n"
4069 "Assss\n" 4083 "A0ssss\n"
4070 }, { 4084 }, {
4071 "Contents didn't change but no texture - leave pass", 4085 "Contents didn't change but no texture - leave pass",
4072 "RssssA[c]sss\n" 4086 "R0ssssA0[c]sss\n"
4073 "Assss\n", 4087 "A0ssss\n",
4074 "RssssAsss\n" 4088 "R0ssssA0sss\n"
4075 "Assss\n" 4089 "A0ssss\n"
4076 }, { 4090 }, {
4077 "Replica: two quads reference the same pass; remove", 4091 "Replica: two quads reference the same pass; remove",
4078 "RssssA[ct]A[ct]sss\n" 4092 "R0ssssA0[ct]A0[ct]sss\n"
4079 "Assss\n", 4093 "A0ssss\n",
4080 "RssssAAsss\n" 4094 "R0ssssA0A0sss\n"
4081 }, { 4095 }, {
4082 "Replica: two quads reference the same pass; leave", 4096 "Replica: two quads reference the same pass; leave",
4083 "RssssA[c]A[c]sss\n" 4097 "R0ssssA0[c]A0[c]sss\n"
4084 "Assss\n", 4098 "A0ssss\n",
4085 "RssssAAsss\n" 4099 "R0ssssA0A0sss\n"
4086 "Assss\n", 4100 "A0ssss\n",
4087 }, { 4101 }, {
4088 "Many passes, remove all", 4102 "Many passes, remove all",
4089 "RssssA[ct]sss\n" 4103 "R0ssssA0[ct]sss\n"
4090 "AsssB[ct]C[ct]s\n" 4104 "A0sssB0[ct]C0[ct]s\n"
4091 "BsssD[ct]ssE[ct]F[ct]\n" 4105 "B0sssD0[ct]ssE0[ct]F0[ct]\n"
4092 "Essssss\n" 4106 "E0ssssss\n"
4093 "CG[ct]\n" 4107 "C0G0[ct]\n"
4094 "Dsssssss\n" 4108 "D0sssssss\n"
4095 "Fsssssss\n" 4109 "F0sssssss\n"
4096 "Gsss\n", 4110 "G0sss\n",
4097 4111
4098 "RssssAsss\n" 4112 "R0ssssA0sss\n"
4099 }, { 4113 }, {
4100 "Deep recursion, remove all", 4114 "Deep recursion, remove all",
4101 4115
4102 "RsssssA[ct]ssss\n" 4116 "R0sssssA0[ct]ssss\n"
4103 "AssssBsss\n" 4117 "A0ssssB0sss\n"
4104 "BC\n" 4118 "B0C0\n"
4105 "CD\n" 4119 "C0D0\n"
4106 "DE\n" 4120 "D0E0\n"
4107 "EF\n" 4121 "E0F0\n"
4108 "FG\n" 4122 "F0G0\n"
4109 "GH\n" 4123 "G0H0\n"
4110 "HsssIsss\n" 4124 "H0sssI0sss\n"
4111 "IJ\n" 4125 "I0J0\n"
4112 "Jssss\n", 4126 "J0ssss\n",
4113 4127
4114 "RsssssAssss\n" 4128 "R0sssssA0ssss\n"
4115 }, { 4129 }, {
4116 "Wide recursion, remove all", 4130 "Wide recursion, remove all",
4117 "RA[ct]B[ct]C[ct]D[ct]E[ct]F[ct]G[ct]H[ct]I[ct]J[ct]\n" 4131 "R0A0[ct]B0[ct]C0[ct]D0[ct]E0[ct]F0[ct]G0[ct]H0[ct]I0[ct]J0[ct]\n"
4118 "As\n" 4132 "A0s\n"
4119 "Bs\n" 4133 "B0s\n"
4120 "Cssss\n" 4134 "C0ssss\n"
4121 "Dssss\n" 4135 "D0ssss\n"
4122 "Es\n" 4136 "E0s\n"
4123 "F\n" 4137 "F0\n"
4124 "Gs\n" 4138 "G0s\n"
4125 "Hs\n" 4139 "H0s\n"
4126 "Is\n" 4140 "I0s\n"
4127 "Jssss\n", 4141 "J0ssss\n",
4128 4142
4129 "RABCDEFGHIJ\n" 4143 "R0A0B0C0D0E0F0G0H0I0J0\n"
4130 }, { 4144 }, {
4131 "Remove passes regardless of cache state", 4145 "Remove passes regardless of cache state",
4132 "RssssA[ct]sss\n" 4146 "R0ssssA0[ct]sss\n"
4133 "AsssBCs\n" 4147 "A0sssB0C0s\n"
4134 "BsssD[c]ssE[t]F\n" 4148 "B0sssD0[c]ssE0[t]F0\n"
4135 "Essssss\n" 4149 "E0ssssss\n"
4136 "CG\n" 4150 "C0G0\n"
4137 "Dsssssss\n" 4151 "D0sssssss\n"
4138 "Fsssssss\n" 4152 "F0sssssss\n"
4139 "Gsss\n", 4153 "G0sss\n",
4140 4154
4141 "RssssAsss\n" 4155 "R0ssssA0sss\n"
4142 }, { 4156 }, {
4143 "Leave some passes, remove others", 4157 "Leave some passes, remove others",
4144 4158
4145 "RssssA[c]sss\n" 4159 "R0ssssA0[c]sss\n"
4146 "AsssB[t]C[ct]s\n" 4160 "A0sssB0[t]C0[ct]s\n"
4147 "BsssD[c]ss\n" 4161 "B0sssD0[c]ss\n"
4148 "CG\n" 4162 "C0G0\n"
4149 "Dsssssss\n" 4163 "D0sssssss\n"
4150 "Gsss\n", 4164 "G0sss\n",
4151 4165
4152 "RssssAsss\n" 4166 "R0ssssA0sss\n"
4153 "AsssBCs\n" 4167 "A0sssB0C0s\n"
4154 "BsssDss\n" 4168 "B0sssD0ss\n"
4155 "Dsssssss\n" 4169 "D0sssssss\n"
4156 }, { 4170 }, {
4157 0, 0, 0 4171 0, 0, 0
4158 } 4172 }
4159 }; 4173 };
4160 4174
4161 static void verifyRenderPassTestData(TestCase& testCase, RenderPassRemovalTestDa ta& testData) 4175 static void verifyRenderPassTestData(TestCase& testCase, RenderPassRemovalTestDa ta& testData)
4162 { 4176 {
4163 char actualResult[1024]; 4177 char actualResult[1024];
4164 dumpRenderPassTestData(testData, actualResult); 4178 dumpRenderPassTestData(testData, actualResult);
4165 EXPECT_STREQ(testCase.expectedResult, actualResult) << "In test case: " << t estCase.name; 4179 EXPECT_STREQ(testCase.expectedResult, actualResult) << "In test case: " << t estCase.name;
(...skipping 11 matching lines...) Expand all
4177 while (removeRenderPassesCases[testCaseIndex].name) { 4191 while (removeRenderPassesCases[testCaseIndex].name) {
4178 RenderPassRemovalTestData testData; 4192 RenderPassRemovalTestData testData;
4179 configureRenderPassTestData(removeRenderPassesCases[testCaseIndex].initS cript, testData, renderer.get()); 4193 configureRenderPassTestData(removeRenderPassesCases[testCaseIndex].initS cript, testData, renderer.get());
4180 CCLayerTreeHostImpl::removeRenderPasses(CCLayerTreeHostImpl::CullRenderP assesWithCachedTextures(*renderer), testData); 4194 CCLayerTreeHostImpl::removeRenderPasses(CCLayerTreeHostImpl::CullRenderP assesWithCachedTextures(*renderer), testData);
4181 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat a); 4195 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat a);
4182 testCaseIndex++; 4196 testCaseIndex++;
4183 } 4197 }
4184 } 4198 }
4185 4199
4186 } // namespace 4200 } // namespace
OLDNEW
« no previous file with comments | « cc/CCLayerTreeHostImpl.cpp ('k') | cc/CCLayerTreeHostTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698