OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/layers/texture_layer.h" | 5 #include "cc/layers/texture_layer.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 1169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1180 | 1180 |
1181 TextureMailbox MakeMailbox(char name) { | 1181 TextureMailbox MakeMailbox(char name) { |
1182 return TextureMailbox(MailboxFromChar(name), | 1182 return TextureMailbox(MailboxFromChar(name), |
1183 SyncTokenFromUInt(static_cast<uint32_t>(name)), | 1183 SyncTokenFromUInt(static_cast<uint32_t>(name)), |
1184 GL_TEXTURE_2D); | 1184 GL_TEXTURE_2D); |
1185 } | 1185 } |
1186 | 1186 |
1187 void MailboxReleased(const gpu::SyncToken& sync_token, bool lost_resource) { | 1187 void MailboxReleased(const gpu::SyncToken& sync_token, bool lost_resource) { |
1188 EXPECT_TRUE(sync_token.HasData()); | 1188 EXPECT_TRUE(sync_token.HasData()); |
1189 ++mailbox_returned_; | 1189 ++mailbox_returned_; |
1190 switch (mailbox_returned_) { | |
1191 case 1: | |
1192 break; | |
1193 case 2: | |
1194 EXPECT_EQ(commit_count_, 5); | |
1195 EndTest(); | |
1196 break; | |
1197 default: | |
1198 NOTREACHED(); | |
1199 } | |
1200 } | 1190 } |
1201 | 1191 |
1202 void SetupTree() override { | 1192 void SetupTree() override { |
1203 scoped_refptr<Layer> root = Layer::Create(); | 1193 scoped_refptr<Layer> root = Layer::Create(); |
1204 root->SetBounds(gfx::Size(10, 10)); | 1194 root->SetBounds(gfx::Size(10, 10)); |
1205 root->SetIsDrawable(true); | 1195 root->SetIsDrawable(true); |
1206 | 1196 |
1207 solid_layer_ = SolidColorLayer::Create(); | 1197 solid_layer_ = SolidColorLayer::Create(); |
1208 solid_layer_->SetBounds(gfx::Size(10, 10)); | 1198 solid_layer_->SetBounds(gfx::Size(10, 10)); |
1209 solid_layer_->SetIsDrawable(true); | 1199 solid_layer_->SetIsDrawable(true); |
1210 solid_layer_->SetBackgroundColor(SK_ColorWHITE); | 1200 solid_layer_->SetBackgroundColor(SK_ColorWHITE); |
1211 root->AddChild(solid_layer_); | 1201 root->AddChild(solid_layer_); |
1212 | 1202 |
1213 parent_layer_ = Layer::Create(); | 1203 parent_layer_ = Layer::Create(); |
1214 parent_layer_->SetBounds(gfx::Size(10, 10)); | 1204 parent_layer_->SetBounds(gfx::Size(10, 10)); |
1215 parent_layer_->SetIsDrawable(true); | 1205 parent_layer_->SetIsDrawable(true); |
1216 root->AddChild(parent_layer_); | 1206 root->AddChild(parent_layer_); |
1217 | 1207 |
1218 texture_layer_ = TextureLayer::CreateForMailbox(this); | 1208 texture_layer_ = TextureLayer::CreateForMailbox(this); |
1219 texture_layer_->SetBounds(gfx::Size(10, 10)); | 1209 texture_layer_->SetBounds(gfx::Size(10, 10)); |
1220 texture_layer_->SetIsDrawable(true); | 1210 texture_layer_->SetIsDrawable(true); |
1221 parent_layer_->AddChild(texture_layer_); | 1211 parent_layer_->AddChild(texture_layer_); |
1222 | 1212 |
1223 layer_tree_host()->SetRootLayer(root); | 1213 layer_tree_host()->SetRootLayer(root); |
1224 LayerTreeTest::SetupTree(); | 1214 LayerTreeTest::SetupTree(); |
1225 } | 1215 } |
1226 | 1216 |
1227 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 1217 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
1228 | 1218 |
1229 void DidCommitAndDrawFrame() override { | 1219 void DidReceiveCompositorFrameAck() override { |
1230 ++commit_count_; | 1220 ++commit_count_; |
1231 switch (commit_count_) { | 1221 switch (commit_count_) { |
1232 case 1: | 1222 case 1: |
1233 // We should have updated the layer, committing the texture. | 1223 // We should have updated the layer, committing the texture. |
1234 EXPECT_EQ(1, prepare_called_); | 1224 EXPECT_EQ(1, prepare_called_); |
1235 // Make layer invisible. | 1225 // Make layer invisible. |
1236 parent_layer_->SetOpacity(0.f); | 1226 parent_layer_->SetOpacity(0.f); |
1237 break; | 1227 break; |
1238 case 2: | 1228 case 2: |
1239 // Layer shouldn't have been updated. | 1229 // Layer shouldn't have been updated. |
(...skipping 14 matching lines...) Expand all Loading... |
1254 parent_layer_->SetOpacity(0.9f); | 1244 parent_layer_->SetOpacity(0.9f); |
1255 break; | 1245 break; |
1256 case 4: | 1246 case 4: |
1257 // Layer should have been updated. | 1247 // Layer should have been updated. |
1258 EXPECT_EQ(2, prepare_called_); | 1248 EXPECT_EQ(2, prepare_called_); |
1259 // So the old mailbox should have been returned already. | 1249 // So the old mailbox should have been returned already. |
1260 EXPECT_EQ(1, mailbox_returned_); | 1250 EXPECT_EQ(1, mailbox_returned_); |
1261 texture_layer_->ClearClient(); | 1251 texture_layer_->ClearClient(); |
1262 break; | 1252 break; |
1263 case 5: | 1253 case 5: |
| 1254 EXPECT_EQ(2, mailbox_returned_); |
| 1255 EndTest(); |
1264 break; | 1256 break; |
1265 default: | 1257 default: |
1266 NOTREACHED(); | 1258 NOTREACHED(); |
1267 break; | 1259 break; |
1268 } | 1260 } |
1269 } | 1261 } |
1270 | 1262 |
1271 void AfterTest() override {} | 1263 void AfterTest() override {} |
1272 | 1264 |
1273 private: | 1265 private: |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1495 base::ThreadChecker main_thread_; | 1487 base::ThreadChecker main_thread_; |
1496 int callback_count_; | 1488 int callback_count_; |
1497 scoped_refptr<Layer> root_; | 1489 scoped_refptr<Layer> root_; |
1498 scoped_refptr<TextureLayer> layer_; | 1490 scoped_refptr<TextureLayer> layer_; |
1499 }; | 1491 }; |
1500 | 1492 |
1501 SINGLE_AND_MULTI_THREAD_TEST_F(TextureLayerWithMailboxImplThreadDeleted); | 1493 SINGLE_AND_MULTI_THREAD_TEST_F(TextureLayerWithMailboxImplThreadDeleted); |
1502 | 1494 |
1503 } // namespace | 1495 } // namespace |
1504 } // namespace cc | 1496 } // namespace cc |
OLD | NEW |