| 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 |