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

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

Issue 1335873002: Initialize default texture for GL_TEXTURE_3D and GL_TEXTURE_2D_ARRAY (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add standalone test for ES3 Created 5 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
« no previous file with comments | « gpu/command_buffer/service/texture_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "gpu/command_buffer/service/texture_manager.h" 5 #include "gpu/command_buffer/service/texture_manager.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 void SetUp() override { 71 void SetUp() override {
72 GpuServiceTest::SetUp(); 72 GpuServiceTest::SetUp();
73 manager_.reset(new TextureManager(NULL, 73 manager_.reset(new TextureManager(NULL,
74 feature_info_.get(), 74 feature_info_.get(),
75 kMaxTextureSize, 75 kMaxTextureSize,
76 kMaxCubeMapTextureSize, 76 kMaxCubeMapTextureSize,
77 kMaxRectangleTextureSize, 77 kMaxRectangleTextureSize,
78 kMax3DTextureSize, 78 kMax3DTextureSize,
79 kUseDefaultTextures)); 79 kUseDefaultTextures));
80 TestHelper::SetupTextureManagerInitExpectations( 80 TestHelper::SetupTextureManagerInitExpectations(
81 gl_.get(), "", kUseDefaultTextures); 81 gl_.get(), false, "", kUseDefaultTextures);
82 manager_->Initialize(); 82 manager_->Initialize();
83 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>()); 83 error_state_.reset(new ::testing::StrictMock<gles2::MockErrorState>());
84 } 84 }
85 85
86 void TearDown() override { 86 void TearDown() override {
87 manager_->Destroy(false); 87 manager_->Destroy(false);
88 manager_.reset(); 88 manager_.reset();
89 GpuServiceTest::TearDown(); 89 GpuServiceTest::TearDown();
90 } 90 }
91 91
92 void SetParameter( 92 void SetParameter(
93 TextureRef* texture_ref, GLenum pname, GLint value, GLenum error) { 93 TextureRef* texture_ref, GLenum pname, GLint value, GLenum error) {
94 TestHelper::SetTexParameteriWithExpectations( 94 TestHelper::SetTexParameteriWithExpectations(
95 gl_.get(), error_state_.get(), manager_.get(), 95 gl_.get(), error_state_.get(), manager_.get(),
96 texture_ref, pname, value, error); 96 texture_ref, pname, value, error);
97 } 97 }
98 98
99 void SetupFeatureInfo(const char* gl_extensions, const char* gl_version) {
100 TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion(
101 gl_.get(), gl_extensions, "", gl_version);
102 feature_info_->Initialize();
103 }
104
99 scoped_refptr<FeatureInfo> feature_info_; 105 scoped_refptr<FeatureInfo> feature_info_;
100 scoped_ptr<TextureManager> manager_; 106 scoped_ptr<TextureManager> manager_;
101 scoped_ptr<MockErrorState> error_state_; 107 scoped_ptr<MockErrorState> error_state_;
102 }; 108 };
103 109
104 // GCC requires these declarations, but MSVC requires they not be present 110 // GCC requires these declarations, but MSVC requires they not be present
105 #ifndef COMPILER_MSVC 111 #ifndef COMPILER_MSVC
106 const GLint TextureManagerTest::kMaxTextureSize; 112 const GLint TextureManagerTest::kMaxTextureSize;
107 const GLint TextureManagerTest::kMaxCubeMapTextureSize; 113 const GLint TextureManagerTest::kMaxCubeMapTextureSize;
108 const GLint TextureManagerTest::kMaxRectangleTextureSize; 114 const GLint TextureManagerTest::kMaxRectangleTextureSize;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), texture->min_filter()); 176 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST), texture->min_filter());
171 SetParameter(texture_ref, GL_TEXTURE_WRAP_S, GL_NEAREST, GL_INVALID_ENUM); 177 SetParameter(texture_ref, GL_TEXTURE_WRAP_S, GL_NEAREST, GL_INVALID_ENUM);
172 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_s()); 178 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_s());
173 SetParameter(texture_ref, GL_TEXTURE_WRAP_T, GL_NEAREST, GL_INVALID_ENUM); 179 SetParameter(texture_ref, GL_TEXTURE_WRAP_T, GL_NEAREST, GL_INVALID_ENUM);
174 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_t()); 180 EXPECT_EQ(static_cast<GLenum>(GL_CLAMP_TO_EDGE), texture->wrap_t());
175 SetParameter(texture_ref, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0, GL_INVALID_VALUE); 181 SetParameter(texture_ref, GL_TEXTURE_MAX_ANISOTROPY_EXT, 0, GL_INVALID_VALUE);
176 } 182 }
177 183
178 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) { 184 TEST_F(TextureManagerTest, UseDefaultTexturesTrue) {
179 bool use_default_textures = true; 185 bool use_default_textures = true;
180 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 186 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
181 187 false, "GL_ANGLE_texture_usage", use_default_textures);
182 TestHelper::SetupTextureManagerInitExpectations(
183 gl_.get(), "GL_ANGLE_texture_usage", use_default_textures);
184 TextureManager manager(NULL, 188 TextureManager manager(NULL,
185 feature_info_.get(), 189 feature_info_.get(),
186 kMaxTextureSize, 190 kMaxTextureSize,
187 kMaxCubeMapTextureSize, 191 kMaxCubeMapTextureSize,
188 kMaxRectangleTextureSize, 192 kMaxRectangleTextureSize,
189 kMax3DTextureSize, 193 kMax3DTextureSize,
190 use_default_textures); 194 use_default_textures);
191 manager.Initialize(); 195 manager.Initialize();
192 196
193 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL); 197 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) != NULL);
194 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL); 198 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) != NULL);
195 199
196 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. 200 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB.
197 201
198 manager.Destroy(false); 202 manager.Destroy(false);
199 } 203 }
200 204
201 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) { 205 TEST_F(TextureManagerTest, UseDefaultTexturesFalse) {
202 bool use_default_textures = false; 206 bool use_default_textures = false;
203 TestHelper::SetupTextureManagerInitExpectations( 207 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
204 gl_.get(), "GL_ANGLE_texture_usage", use_default_textures); 208 false, "GL_ANGLE_texture_usage", use_default_textures);
205 TextureManager manager(NULL, 209 TextureManager manager(NULL,
206 feature_info_.get(), 210 feature_info_.get(),
207 kMaxTextureSize, 211 kMaxTextureSize,
208 kMaxCubeMapTextureSize, 212 kMaxCubeMapTextureSize,
209 kMaxRectangleTextureSize, 213 kMaxRectangleTextureSize,
210 kMax3DTextureSize, 214 kMax3DTextureSize,
211 use_default_textures); 215 use_default_textures);
212 manager.Initialize(); 216 manager.Initialize();
213 217
214 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL); 218 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D) == NULL);
215 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL); 219 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_CUBE_MAP) == NULL);
216 220
217 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB. 221 // TODO(vmiura): Test GL_TEXTURE_EXTERNAL_OES & GL_TEXTURE_RECTANGLE_ARB.
218 222
219 manager.Destroy(false); 223 manager.Destroy(false);
220 } 224 }
221 225
226 TEST_F(TextureManagerTest, UseDefaultTexturesTrueES3) {
227 bool use_default_textures = true;
228 SetupFeatureInfo("", "OpenGL ES 3.0");
229 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_COLOR_ATTACHMENTS, _))
230 .WillOnce(SetArgPointee<1>(8))
231 .RetiresOnSaturation();
232 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_DRAW_BUFFERS, _))
233 .WillOnce(SetArgPointee<1>(8))
234 .RetiresOnSaturation();
235 feature_info_->EnableES3Validators();
236 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
237 true, "", use_default_textures);
238 TextureManager manager(NULL,
239 feature_info_.get(),
240 kMaxTextureSize,
241 kMaxCubeMapTextureSize,
242 kMaxRectangleTextureSize,
243 kMax3DTextureSize,
244 use_default_textures);
245 manager.Initialize();
246
247 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) != NULL);
248 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) != NULL);
249
250 manager.Destroy(false);
251 }
252
253 TEST_F(TextureManagerTest, UseDefaultTexturesFalseES3) {
254 bool use_default_textures = false;
255 SetupFeatureInfo("", "OpenGL ES 3.0");
256 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_COLOR_ATTACHMENTS, _))
257 .WillOnce(SetArgPointee<1>(8))
258 .RetiresOnSaturation();
259 EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_DRAW_BUFFERS, _))
260 .WillOnce(SetArgPointee<1>(8))
261 .RetiresOnSaturation();
262 feature_info_->EnableES3Validators();
Zhenyao Mo 2015/09/17 14:47:05 You can add a "bool enable_es3" to function SetupF
qiankun 2015/09/17 15:18:31 Done.
263 TestHelper::SetupTextureManagerInitExpectations(gl_.get(),
264 true, "", use_default_textures);
265 TextureManager manager(NULL,
266 feature_info_.get(),
267 kMaxTextureSize,
268 kMaxCubeMapTextureSize,
269 kMaxRectangleTextureSize,
270 kMax3DTextureSize,
271 use_default_textures);
272 manager.Initialize();
273
274 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_3D) == NULL);
275 EXPECT_TRUE(manager.GetDefaultTextureInfo(GL_TEXTURE_2D_ARRAY) == NULL);
276
277 manager.Destroy(false);
278 }
279
222 TEST_F(TextureManagerTest, TextureUsageExt) { 280 TEST_F(TextureManagerTest, TextureUsageExt) {
223 TestHelper::SetupTextureManagerInitExpectations( 281 TestHelper::SetupTextureManagerInitExpectations(
224 gl_.get(), "GL_ANGLE_texture_usage", kUseDefaultTextures); 282 gl_.get(), false, "GL_ANGLE_texture_usage", kUseDefaultTextures);
225 TextureManager manager(NULL, 283 TextureManager manager(NULL,
226 feature_info_.get(), 284 feature_info_.get(),
227 kMaxTextureSize, 285 kMaxTextureSize,
228 kMaxCubeMapTextureSize, 286 kMaxCubeMapTextureSize,
229 kMaxRectangleTextureSize, 287 kMaxRectangleTextureSize,
230 kMax3DTextureSize, 288 kMax3DTextureSize,
231 kUseDefaultTextures); 289 kUseDefaultTextures);
232 manager.Initialize(); 290 manager.Initialize();
233 const GLuint kClient1Id = 1; 291 const GLuint kClient1Id = 1;
234 const GLuint kService1Id = 11; 292 const GLuint kService1Id = 11;
235 // Check we can create texture. 293 // Check we can create texture.
236 manager.CreateTexture(kClient1Id, kService1Id); 294 manager.CreateTexture(kClient1Id, kService1Id);
237 // Check texture got created. 295 // Check texture got created.
238 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 296 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
239 ASSERT_TRUE(texture_ref != NULL); 297 ASSERT_TRUE(texture_ref != NULL);
240 TestHelper::SetTexParameteriWithExpectations( 298 TestHelper::SetTexParameteriWithExpectations(
241 gl_.get(), error_state_.get(), &manager, texture_ref, 299 gl_.get(), error_state_.get(), &manager, texture_ref,
242 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR); 300 GL_TEXTURE_USAGE_ANGLE, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, GL_NO_ERROR);
243 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE), 301 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_ATTACHMENT_ANGLE),
244 texture_ref->texture()->usage()); 302 texture_ref->texture()->usage());
245 manager.Destroy(false); 303 manager.Destroy(false);
246 } 304 }
247 305
248 TEST_F(TextureManagerTest, Destroy) { 306 TEST_F(TextureManagerTest, Destroy) {
249 const GLuint kClient1Id = 1; 307 const GLuint kClient1Id = 1;
250 const GLuint kService1Id = 11; 308 const GLuint kService1Id = 11;
251 TestHelper::SetupTextureManagerInitExpectations( 309 TestHelper::SetupTextureManagerInitExpectations(
252 gl_.get(), "", kUseDefaultTextures); 310 gl_.get(), false, "", kUseDefaultTextures);
253 TextureManager manager(NULL, 311 TextureManager manager(NULL,
254 feature_info_.get(), 312 feature_info_.get(),
255 kMaxTextureSize, 313 kMaxTextureSize,
256 kMaxCubeMapTextureSize, 314 kMaxCubeMapTextureSize,
257 kMaxRectangleTextureSize, 315 kMaxRectangleTextureSize,
258 kMax3DTextureSize, 316 kMax3DTextureSize,
259 kUseDefaultTextures); 317 kUseDefaultTextures);
260 manager.Initialize(); 318 manager.Initialize();
261 // Check we can create texture. 319 // Check we can create texture.
262 manager.CreateTexture(kClient1Id, kService1Id); 320 manager.CreateTexture(kClient1Id, kService1Id);
263 // Check texture got created. 321 // Check texture got created.
264 TextureRef* texture = manager.GetTexture(kClient1Id); 322 TextureRef* texture = manager.GetTexture(kClient1Id);
265 ASSERT_TRUE(texture != NULL); 323 ASSERT_TRUE(texture != NULL);
266 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) 324 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id)))
267 .Times(1) 325 .Times(1)
268 .RetiresOnSaturation(); 326 .RetiresOnSaturation();
269 TestHelper::SetupTextureManagerDestructionExpectations( 327 TestHelper::SetupTextureManagerDestructionExpectations(
270 gl_.get(), "", kUseDefaultTextures); 328 gl_.get(), false, "", kUseDefaultTextures);
271 manager.Destroy(true); 329 manager.Destroy(true);
272 // Check that resources got freed. 330 // Check that resources got freed.
273 texture = manager.GetTexture(kClient1Id); 331 texture = manager.GetTexture(kClient1Id);
274 ASSERT_TRUE(texture == NULL); 332 ASSERT_TRUE(texture == NULL);
275 } 333 }
276 334
277 TEST_F(TextureManagerTest, MaxValues) { 335 TEST_F(TextureManagerTest, MaxValues) {
278 // Check we get the right values for the max sizes. 336 // Check we get the right values for the max sizes.
279 EXPECT_EQ(kMax2dLevels, manager_->MaxLevelsForTarget(GL_TEXTURE_2D)); 337 EXPECT_EQ(kMax2dLevels, manager_->MaxLevelsForTarget(GL_TEXTURE_2D));
280 EXPECT_EQ(kMaxCubeMapLevels, 338 EXPECT_EQ(kMaxCubeMapLevels,
(...skipping 1536 matching lines...) Expand 10 before | Expand all | Expand 10 after
1817 memory_tracker2_ = new CountingMemoryTracker; 1875 memory_tracker2_ = new CountingMemoryTracker;
1818 texture_manager2_.reset( 1876 texture_manager2_.reset(
1819 new TextureManager(memory_tracker2_.get(), 1877 new TextureManager(memory_tracker2_.get(),
1820 feature_info_.get(), 1878 feature_info_.get(),
1821 TextureManagerTest::kMaxTextureSize, 1879 TextureManagerTest::kMaxTextureSize,
1822 TextureManagerTest::kMaxCubeMapTextureSize, 1880 TextureManagerTest::kMaxCubeMapTextureSize,
1823 TextureManagerTest::kMaxRectangleTextureSize, 1881 TextureManagerTest::kMaxRectangleTextureSize,
1824 TextureManagerTest::kMax3DTextureSize, 1882 TextureManagerTest::kMax3DTextureSize,
1825 kUseDefaultTextures)); 1883 kUseDefaultTextures));
1826 TestHelper::SetupTextureManagerInitExpectations( 1884 TestHelper::SetupTextureManagerInitExpectations(
1827 gl_.get(), "", kUseDefaultTextures); 1885 gl_.get(), false, "", kUseDefaultTextures);
1828 texture_manager1_->Initialize(); 1886 texture_manager1_->Initialize();
1829 TestHelper::SetupTextureManagerInitExpectations( 1887 TestHelper::SetupTextureManagerInitExpectations(
1830 gl_.get(), "", kUseDefaultTextures); 1888 gl_.get(), false, "", kUseDefaultTextures);
1831 texture_manager2_->Initialize(); 1889 texture_manager2_->Initialize();
1832 } 1890 }
1833 1891
1834 void TearDown() override { 1892 void TearDown() override {
1835 texture_manager2_->Destroy(false); 1893 texture_manager2_->Destroy(false);
1836 texture_manager2_.reset(); 1894 texture_manager2_.reset();
1837 texture_manager1_->Destroy(false); 1895 texture_manager1_->Destroy(false);
1838 texture_manager1_.reset(); 1896 texture_manager1_.reset();
1839 GpuServiceTest::TearDown(); 1897 GpuServiceTest::TearDown();
1840 } 1898 }
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
2065 texture_manager2_->RemoveTexture(20); 2123 texture_manager2_->RemoveTexture(20);
2066 } 2124 }
2067 2125
2068 2126
2069 class TextureFormatTypeValidationTest : public TextureManagerTest { 2127 class TextureFormatTypeValidationTest : public TextureManagerTest {
2070 public: 2128 public:
2071 TextureFormatTypeValidationTest() {} 2129 TextureFormatTypeValidationTest() {}
2072 ~TextureFormatTypeValidationTest() override {} 2130 ~TextureFormatTypeValidationTest() override {}
2073 2131
2074 protected: 2132 protected:
2075 void SetupFeatureInfo(const char* gl_extensions, const char* gl_version) {
2076 TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion(
2077 gl_.get(), gl_extensions, "", gl_version);
2078 feature_info_->Initialize();
2079 }
2080
2081 void ExpectValid(GLenum format, GLenum type, GLenum internal_format) { 2133 void ExpectValid(GLenum format, GLenum type, GLenum internal_format) {
2082 EXPECT_TRUE(manager_->ValidateTextureParameters( 2134 EXPECT_TRUE(manager_->ValidateTextureParameters(
2083 error_state_.get(), "", format, type, internal_format, 0)); 2135 error_state_.get(), "", format, type, internal_format, 0));
2084 } 2136 }
2085 2137
2086 void ExpectInvalid(GLenum format, GLenum type, GLenum internal_format) { 2138 void ExpectInvalid(GLenum format, GLenum type, GLenum internal_format) {
2087 EXPECT_CALL(*error_state_, 2139 EXPECT_CALL(*error_state_,
2088 SetGLError(_, _, _, _, _)) 2140 SetGLError(_, _, _, _, _))
2089 .Times(1) 2141 .Times(1)
2090 .RetiresOnSaturation(); 2142 .RetiresOnSaturation();
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
2312 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F); 2364 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F);
2313 ExpectValid(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); 2365 ExpectValid(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8);
2314 ExpectValid(GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, 2366 ExpectValid(GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV,
2315 GL_DEPTH32F_STENCIL8); 2367 GL_DEPTH32F_STENCIL8);
2316 2368
2317 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8); 2369 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8);
2318 } 2370 }
2319 2371
2320 } // namespace gles2 2372 } // namespace gles2
2321 } // namespace gpu 2373 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/texture_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698