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

Side by Side Diff: gpu/command_buffer/service/mailbox_manager_unittest.cc

Issue 165393003: gpu: Generate mailboxes on client side (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 10 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "gpu/command_buffer/service/mailbox_manager.h" 5 #include "gpu/command_buffer/service/mailbox_manager.h"
6 6
7 #include "gpu/command_buffer/service/texture_manager.h" 7 #include "gpu/command_buffer/service/texture_manager.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace gpu { 10 namespace gpu {
(...skipping 16 matching lines...) Expand all
27 scoped_refptr<MailboxManager> manager_; 27 scoped_refptr<MailboxManager> manager_;
28 28
29 private: 29 private:
30 DISALLOW_COPY_AND_ASSIGN(MailboxManagerTest); 30 DISALLOW_COPY_AND_ASSIGN(MailboxManagerTest);
31 }; 31 };
32 32
33 // Tests basic produce/consume behavior. 33 // Tests basic produce/consume behavior.
34 TEST_F(MailboxManagerTest, Basic) { 34 TEST_F(MailboxManagerTest, Basic) {
35 Texture* texture = CreateTexture(); 35 Texture* texture = CreateTexture();
36 36
37 Mailbox name; 37 Mailbox name = Mailbox::Generate();
38 manager_->GenerateMailbox(&name);
39 manager_->ProduceTexture(0, name, texture); 38 manager_->ProduceTexture(0, name, texture);
40 EXPECT_EQ(texture, manager_->ConsumeTexture(0, name)); 39 EXPECT_EQ(texture, manager_->ConsumeTexture(0, name));
41 40
42 // We can consume multiple times. 41 // We can consume multiple times.
43 EXPECT_EQ(texture, manager_->ConsumeTexture(0, name)); 42 EXPECT_EQ(texture, manager_->ConsumeTexture(0, name));
44 43
45 // Wrong target should fail the consume. 44 // Wrong target should fail the consume.
46 EXPECT_EQ(NULL, manager_->ConsumeTexture(1, name)); 45 EXPECT_EQ(NULL, manager_->ConsumeTexture(1, name));
47 46
48 // Destroy should cleanup the mailbox. 47 // Destroy should cleanup the mailbox.
49 DestroyTexture(texture); 48 DestroyTexture(texture);
50 EXPECT_EQ(NULL, manager_->ConsumeTexture(0, name)); 49 EXPECT_EQ(NULL, manager_->ConsumeTexture(0, name));
51 } 50 }
52 51
53 // Tests behavior with multiple produce on the same texture. 52 // Tests behavior with multiple produce on the same texture.
54 TEST_F(MailboxManagerTest, ProduceMultipleMailbox) { 53 TEST_F(MailboxManagerTest, ProduceMultipleMailbox) {
55 Texture* texture = CreateTexture(); 54 Texture* texture = CreateTexture();
56 55
57 Mailbox name1; 56 Mailbox name1 = Mailbox::Generate();
58 manager_->GenerateMailbox(&name1);
59 57
60 manager_->ProduceTexture(0, name1, texture); 58 manager_->ProduceTexture(0, name1, texture);
61 EXPECT_EQ(texture, manager_->ConsumeTexture(0, name1)); 59 EXPECT_EQ(texture, manager_->ConsumeTexture(0, name1));
62 60
63 // Can produce a second time with the same mailbox. 61 // Can produce a second time with the same mailbox.
64 manager_->ProduceTexture(0, name1, texture); 62 manager_->ProduceTexture(0, name1, texture);
65 EXPECT_EQ(texture, manager_->ConsumeTexture(0, name1)); 63 EXPECT_EQ(texture, manager_->ConsumeTexture(0, name1));
66 64
67 // Can produce again, with a different mailbox. 65 // Can produce again, with a different mailbox.
68 Mailbox name2; 66 Mailbox name2 = Mailbox::Generate();
69 manager_->GenerateMailbox(&name2);
70 manager_->ProduceTexture(0, name2, texture); 67 manager_->ProduceTexture(0, name2, texture);
71 68
72 // Still available under all mailboxes. 69 // Still available under all mailboxes.
73 EXPECT_EQ(texture, manager_->ConsumeTexture(0, name1)); 70 EXPECT_EQ(texture, manager_->ConsumeTexture(0, name1));
74 EXPECT_EQ(texture, manager_->ConsumeTexture(0, name2)); 71 EXPECT_EQ(texture, manager_->ConsumeTexture(0, name2));
75 72
76 // Destroy should cleanup all mailboxes. 73 // Destroy should cleanup all mailboxes.
77 DestroyTexture(texture); 74 DestroyTexture(texture);
78 EXPECT_EQ(NULL, manager_->ConsumeTexture(0, name1)); 75 EXPECT_EQ(NULL, manager_->ConsumeTexture(0, name1));
79 EXPECT_EQ(NULL, manager_->ConsumeTexture(0, name2)); 76 EXPECT_EQ(NULL, manager_->ConsumeTexture(0, name2));
80 } 77 }
81 78
82 // Tests behavior with multiple produce on the same mailbox with different 79 // Tests behavior with multiple produce on the same mailbox with different
83 // textures. 80 // textures.
84 TEST_F(MailboxManagerTest, ProduceMultipleTexture) { 81 TEST_F(MailboxManagerTest, ProduceMultipleTexture) {
85 Texture* texture1 = CreateTexture(); 82 Texture* texture1 = CreateTexture();
86 Texture* texture2 = CreateTexture(); 83 Texture* texture2 = CreateTexture();
87 84
88 Mailbox name; 85 Mailbox name = Mailbox::Generate();
89 manager_->GenerateMailbox(&name);
90 86
91 manager_->ProduceTexture(0, name, texture1); 87 manager_->ProduceTexture(0, name, texture1);
92 EXPECT_EQ(texture1, manager_->ConsumeTexture(0, name)); 88 EXPECT_EQ(texture1, manager_->ConsumeTexture(0, name));
93 89
94 // Can produce a second time with the same mailbox, but different texture. 90 // Can produce a second time with the same mailbox, but different texture.
95 manager_->ProduceTexture(0, name, texture2); 91 manager_->ProduceTexture(0, name, texture2);
96 EXPECT_EQ(texture2, manager_->ConsumeTexture(0, name)); 92 EXPECT_EQ(texture2, manager_->ConsumeTexture(0, name));
97 93
98 // Destroying the texture that's under no mailbox shouldn't have an effect. 94 // Destroying the texture that's under no mailbox shouldn't have an effect.
99 DestroyTexture(texture1); 95 DestroyTexture(texture1);
100 EXPECT_EQ(texture2, manager_->ConsumeTexture(0, name)); 96 EXPECT_EQ(texture2, manager_->ConsumeTexture(0, name));
101 97
102 // Destroying the texture that's bound should clean up. 98 // Destroying the texture that's bound should clean up.
103 DestroyTexture(texture2); 99 DestroyTexture(texture2);
104 EXPECT_EQ(NULL, manager_->ConsumeTexture(0, name)); 100 EXPECT_EQ(NULL, manager_->ConsumeTexture(0, name));
105 } 101 }
106 102
107 TEST_F(MailboxManagerTest, ProduceMultipleTextureMailbox) { 103 TEST_F(MailboxManagerTest, ProduceMultipleTextureMailbox) {
108 Texture* texture1 = CreateTexture(); 104 Texture* texture1 = CreateTexture();
109 Texture* texture2 = CreateTexture(); 105 Texture* texture2 = CreateTexture();
110 Mailbox name1; 106 Mailbox name1 = Mailbox::Generate();
111 manager_->GenerateMailbox(&name1); 107 Mailbox name2 = Mailbox::Generate();
112 Mailbox name2;
113 manager_->GenerateMailbox(&name2);
114 108
115 // Put texture1 on name1 and name2. 109 // Put texture1 on name1 and name2.
116 manager_->ProduceTexture(0, name1, texture1); 110 manager_->ProduceTexture(0, name1, texture1);
117 manager_->ProduceTexture(0, name2, texture1); 111 manager_->ProduceTexture(0, name2, texture1);
118 EXPECT_EQ(texture1, manager_->ConsumeTexture(0, name1)); 112 EXPECT_EQ(texture1, manager_->ConsumeTexture(0, name1));
119 EXPECT_EQ(texture1, manager_->ConsumeTexture(0, name2)); 113 EXPECT_EQ(texture1, manager_->ConsumeTexture(0, name2));
120 114
121 // Put texture2 on name2. 115 // Put texture2 on name2.
122 manager_->ProduceTexture(0, name2, texture2); 116 manager_->ProduceTexture(0, name2, texture2);
123 EXPECT_EQ(texture1, manager_->ConsumeTexture(0, name1)); 117 EXPECT_EQ(texture1, manager_->ConsumeTexture(0, name1));
124 EXPECT_EQ(texture2, manager_->ConsumeTexture(0, name2)); 118 EXPECT_EQ(texture2, manager_->ConsumeTexture(0, name2));
125 119
126 // Destroy texture1, shouldn't affect name2. 120 // Destroy texture1, shouldn't affect name2.
127 DestroyTexture(texture1); 121 DestroyTexture(texture1);
128 EXPECT_EQ(NULL, manager_->ConsumeTexture(0, name1)); 122 EXPECT_EQ(NULL, manager_->ConsumeTexture(0, name1));
129 EXPECT_EQ(texture2, manager_->ConsumeTexture(0, name2)); 123 EXPECT_EQ(texture2, manager_->ConsumeTexture(0, name2));
130 124
131 DestroyTexture(texture2); 125 DestroyTexture(texture2);
132 EXPECT_EQ(NULL, manager_->ConsumeTexture(0, name2)); 126 EXPECT_EQ(NULL, manager_->ConsumeTexture(0, name2));
133 } 127 }
134 128
135 } // namespace gles2 129 } // namespace gles2
136 } // namespace gpu 130 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698