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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 | 96 |
97 StubLayerTreeHostSingleThreadClient single_thread_client_; | 97 StubLayerTreeHostSingleThreadClient single_thread_client_; |
98 }; | 98 }; |
99 | 99 |
100 class FakeTextureLayerClient : public TextureLayerClient { | 100 class FakeTextureLayerClient : public TextureLayerClient { |
101 public: | 101 public: |
102 FakeTextureLayerClient() : mailbox_changed_(true) {} | 102 FakeTextureLayerClient() : mailbox_changed_(true) {} |
103 | 103 |
104 bool PrepareTextureMailbox( | 104 bool PrepareTextureMailbox( |
105 TextureMailbox* mailbox, | 105 TextureMailbox* mailbox, |
106 std::unique_ptr<SingleReleaseCallback>* release_callback, | 106 std::unique_ptr<SingleReleaseCallback>* release_callback) override { |
107 bool use_shared_memory) override { | |
108 if (!mailbox_changed_) | 107 if (!mailbox_changed_) |
109 return false; | 108 return false; |
110 | 109 |
111 *mailbox = mailbox_; | 110 *mailbox = mailbox_; |
112 *release_callback = std::move(release_callback_); | 111 *release_callback = std::move(release_callback_); |
113 mailbox_changed_ = false; | 112 mailbox_changed_ = false; |
114 return true; | 113 return true; |
115 } | 114 } |
116 | 115 |
117 void set_mailbox(const TextureMailbox& mailbox, | 116 void set_mailbox(const TextureMailbox& mailbox, |
(...skipping 927 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1045 | 1044 |
1046 // Checks that TextureLayer::Update does not cause an extra commit when setting | 1045 // Checks that TextureLayer::Update does not cause an extra commit when setting |
1047 // the texture mailbox. | 1046 // the texture mailbox. |
1048 class TextureLayerNoExtraCommitForMailboxTest | 1047 class TextureLayerNoExtraCommitForMailboxTest |
1049 : public LayerTreeTest, | 1048 : public LayerTreeTest, |
1050 public TextureLayerClient { | 1049 public TextureLayerClient { |
1051 public: | 1050 public: |
1052 // TextureLayerClient implementation. | 1051 // TextureLayerClient implementation. |
1053 bool PrepareTextureMailbox( | 1052 bool PrepareTextureMailbox( |
1054 TextureMailbox* texture_mailbox, | 1053 TextureMailbox* texture_mailbox, |
1055 std::unique_ptr<SingleReleaseCallback>* release_callback, | 1054 std::unique_ptr<SingleReleaseCallback>* release_callback) override { |
1056 bool use_shared_memory) override { | |
1057 if (layer_tree_host()->source_frame_number() == 1) { | 1055 if (layer_tree_host()->source_frame_number() == 1) { |
1058 // Once this has been committed, the mailbox will be released. | 1056 // Once this has been committed, the mailbox will be released. |
1059 *texture_mailbox = TextureMailbox(); | 1057 *texture_mailbox = TextureMailbox(); |
1060 return true; | 1058 return true; |
1061 } | 1059 } |
1062 | 1060 |
1063 *texture_mailbox = TextureMailbox(MailboxFromChar('1'), | 1061 *texture_mailbox = TextureMailbox(MailboxFromChar('1'), |
1064 SyncTokenFromUInt(0x123), GL_TEXTURE_2D); | 1062 SyncTokenFromUInt(0x123), GL_TEXTURE_2D); |
1065 *release_callback = SingleReleaseCallback::Create( | 1063 *release_callback = SingleReleaseCallback::Create( |
1066 base::Bind(&TextureLayerNoExtraCommitForMailboxTest::MailboxReleased, | 1064 base::Bind(&TextureLayerNoExtraCommitForMailboxTest::MailboxReleased, |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1124 : mailbox_changed_(true), | 1122 : mailbox_changed_(true), |
1125 mailbox_returned_(0), | 1123 mailbox_returned_(0), |
1126 prepare_called_(0), | 1124 prepare_called_(0), |
1127 commit_count_(0) { | 1125 commit_count_(0) { |
1128 mailbox_ = MakeMailbox('1'); | 1126 mailbox_ = MakeMailbox('1'); |
1129 } | 1127 } |
1130 | 1128 |
1131 // TextureLayerClient implementation. | 1129 // TextureLayerClient implementation. |
1132 bool PrepareTextureMailbox( | 1130 bool PrepareTextureMailbox( |
1133 TextureMailbox* mailbox, | 1131 TextureMailbox* mailbox, |
1134 std::unique_ptr<SingleReleaseCallback>* release_callback, | 1132 std::unique_ptr<SingleReleaseCallback>* release_callback) override { |
1135 bool use_shared_memory) override { | |
1136 ++prepare_called_; | 1133 ++prepare_called_; |
1137 if (!mailbox_changed_) | 1134 if (!mailbox_changed_) |
1138 return false; | 1135 return false; |
1139 *mailbox = mailbox_; | 1136 *mailbox = mailbox_; |
1140 *release_callback = SingleReleaseCallback::Create( | 1137 *release_callback = SingleReleaseCallback::Create( |
1141 base::Bind(&TextureLayerChangeInvisibleMailboxTest::MailboxReleased, | 1138 base::Bind(&TextureLayerChangeInvisibleMailboxTest::MailboxReleased, |
1142 base::Unretained(this))); | 1139 base::Unretained(this))); |
1143 return true; | 1140 return true; |
1144 } | 1141 } |
1145 | 1142 |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1244 | 1241 |
1245 // Test that TextureLayerImpl::ReleaseResources can be called which releases | 1242 // Test that TextureLayerImpl::ReleaseResources can be called which releases |
1246 // the mailbox back to TextureLayerClient. | 1243 // the mailbox back to TextureLayerClient. |
1247 class TextureLayerReleaseResourcesBase | 1244 class TextureLayerReleaseResourcesBase |
1248 : public LayerTreeTest, | 1245 : public LayerTreeTest, |
1249 public TextureLayerClient { | 1246 public TextureLayerClient { |
1250 public: | 1247 public: |
1251 // TextureLayerClient implementation. | 1248 // TextureLayerClient implementation. |
1252 bool PrepareTextureMailbox( | 1249 bool PrepareTextureMailbox( |
1253 TextureMailbox* mailbox, | 1250 TextureMailbox* mailbox, |
1254 std::unique_ptr<SingleReleaseCallback>* release_callback, | 1251 std::unique_ptr<SingleReleaseCallback>* release_callback) override { |
1255 bool use_shared_memory) override { | |
1256 *mailbox = TextureMailbox(MailboxFromChar('1'), SyncTokenFromUInt(1), | 1252 *mailbox = TextureMailbox(MailboxFromChar('1'), SyncTokenFromUInt(1), |
1257 GL_TEXTURE_2D); | 1253 GL_TEXTURE_2D); |
1258 *release_callback = SingleReleaseCallback::Create( | 1254 *release_callback = SingleReleaseCallback::Create( |
1259 base::Bind(&TextureLayerReleaseResourcesBase::MailboxReleased, | 1255 base::Bind(&TextureLayerReleaseResourcesBase::MailboxReleased, |
1260 base::Unretained(this))); | 1256 base::Unretained(this))); |
1261 return true; | 1257 return true; |
1262 } | 1258 } |
1263 | 1259 |
1264 void MailboxReleased(const gpu::SyncToken& sync_token, bool lost_resource) { | 1260 void MailboxReleased(const gpu::SyncToken& sync_token, bool lost_resource) { |
1265 mailbox_released_ = true; | 1261 mailbox_released_ = true; |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1453 base::ThreadChecker main_thread_; | 1449 base::ThreadChecker main_thread_; |
1454 int callback_count_; | 1450 int callback_count_; |
1455 scoped_refptr<Layer> root_; | 1451 scoped_refptr<Layer> root_; |
1456 scoped_refptr<TextureLayer> layer_; | 1452 scoped_refptr<TextureLayer> layer_; |
1457 }; | 1453 }; |
1458 | 1454 |
1459 SINGLE_AND_MULTI_THREAD_TEST_F(TextureLayerWithMailboxImplThreadDeleted); | 1455 SINGLE_AND_MULTI_THREAD_TEST_F(TextureLayerWithMailboxImplThreadDeleted); |
1460 | 1456 |
1461 } // namespace | 1457 } // namespace |
1462 } // namespace cc | 1458 } // namespace cc |
OLD | NEW |