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

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

Issue 1341133002: Add GL_TRANSFORM_FEEDBACK_BUFFER_MODE to GetProgramiv query. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@uniform
Patch Set: rebase 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/program_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/program_manager.h" 5 #include "gpu/command_buffer/service/program_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 1220 matching lines...) Expand 10 before | Expand all | Expand 10 after
1231 EXPECT_EQ(0, memcmp(&data, bucket_data, sizeof(Data))); 1231 EXPECT_EQ(0, memcmp(&data, bucket_data, sizeof(Data)));
1232 } 1232 }
1233 1233
1234 TEST_F(ProgramManagerWithShaderTest, 1234 TEST_F(ProgramManagerWithShaderTest,
1235 ProgramInfoGetTransformFeedbackVaryingsNone) { 1235 ProgramInfoGetTransformFeedbackVaryingsNone) {
1236 CommonDecoder::Bucket bucket; 1236 CommonDecoder::Bucket bucket;
1237 const Program* program = manager_.GetProgram(kClientProgramId); 1237 const Program* program = manager_.GetProgram(kClientProgramId);
1238 ASSERT_TRUE(program != NULL); 1238 ASSERT_TRUE(program != NULL);
1239 // The program's previous link failed. 1239 // The program's previous link failed.
1240 EXPECT_CALL(*(gl_.get()), 1240 EXPECT_CALL(*(gl_.get()),
1241 GetProgramiv(kServiceProgramId,
1242 GL_TRANSFORM_FEEDBACK_BUFFER_MODE,
1243 _))
1244 .WillOnce(SetArgPointee<2>(GL_INTERLEAVED_ATTRIBS))
1245 .RetiresOnSaturation();
1246 EXPECT_CALL(*(gl_.get()),
1241 GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1247 GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1242 .WillOnce(SetArgPointee<2>(GL_FALSE)) 1248 .WillOnce(SetArgPointee<2>(GL_FALSE))
1243 .RetiresOnSaturation(); 1249 .RetiresOnSaturation();
1244 EXPECT_TRUE(program->GetTransformFeedbackVaryings(&bucket)); 1250 EXPECT_TRUE(program->GetTransformFeedbackVaryings(&bucket));
1245 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket.size()); 1251 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket.size());
1246 TransformFeedbackVaryingsHeader* header = 1252 TransformFeedbackVaryingsHeader* header =
1247 bucket.GetDataAs<TransformFeedbackVaryingsHeader*>( 1253 bucket.GetDataAs<TransformFeedbackVaryingsHeader*>(
1248 0, sizeof(TransformFeedbackVaryingsHeader)); 1254 0, sizeof(TransformFeedbackVaryingsHeader));
1249 EXPECT_TRUE(header != NULL); 1255 EXPECT_TRUE(header != NULL);
1250 EXPECT_EQ(0u, header->num_transform_feedback_varyings); 1256 EXPECT_EQ(0u, header->num_transform_feedback_varyings);
1251 // Zero uniform blocks. 1257 EXPECT_EQ(static_cast<uint32_t>(GL_INTERLEAVED_ATTRIBS),
1258 header->transform_feedback_buffer_mode);
1259 // Zero transform feedback blocks.
1260 EXPECT_CALL(*(gl_.get()),
1261 GetProgramiv(kServiceProgramId,
1262 GL_TRANSFORM_FEEDBACK_BUFFER_MODE,
1263 _))
1264 .WillOnce(SetArgPointee<2>(GL_SEPARATE_ATTRIBS))
1265 .RetiresOnSaturation();
1252 EXPECT_CALL(*(gl_.get()), 1266 EXPECT_CALL(*(gl_.get()),
1253 GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1267 GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1254 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1268 .WillOnce(SetArgPointee<2>(GL_TRUE))
1255 .RetiresOnSaturation(); 1269 .RetiresOnSaturation();
1256 EXPECT_CALL(*(gl_.get()), 1270 EXPECT_CALL(*(gl_.get()),
1257 GetProgramiv( 1271 GetProgramiv(
1258 kServiceProgramId, GL_TRANSFORM_FEEDBACK_VARYINGS, _)) 1272 kServiceProgramId, GL_TRANSFORM_FEEDBACK_VARYINGS, _))
1259 .WillOnce(SetArgPointee<2>(0)) 1273 .WillOnce(SetArgPointee<2>(0))
1260 .RetiresOnSaturation(); 1274 .RetiresOnSaturation();
1261 EXPECT_TRUE(program->GetTransformFeedbackVaryings(&bucket)); 1275 EXPECT_TRUE(program->GetTransformFeedbackVaryings(&bucket));
1262 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket.size()); 1276 EXPECT_EQ(sizeof(TransformFeedbackVaryingsHeader), bucket.size());
1263 header = bucket.GetDataAs<TransformFeedbackVaryingsHeader*>( 1277 header = bucket.GetDataAs<TransformFeedbackVaryingsHeader*>(
1264 0, sizeof(TransformFeedbackVaryingsHeader)); 1278 0, sizeof(TransformFeedbackVaryingsHeader));
1265 EXPECT_TRUE(header != NULL); 1279 EXPECT_TRUE(header != NULL);
1280 EXPECT_EQ(static_cast<uint32_t>(GL_SEPARATE_ATTRIBS),
1281 header->transform_feedback_buffer_mode);
1266 EXPECT_EQ(0u, header->num_transform_feedback_varyings); 1282 EXPECT_EQ(0u, header->num_transform_feedback_varyings);
1267 } 1283 }
1268 1284
1269 TEST_F(ProgramManagerWithShaderTest, 1285 TEST_F(ProgramManagerWithShaderTest,
1270 ProgramInfoGetTransformFeedbackVaryingsValid) { 1286 ProgramInfoGetTransformFeedbackVaryingsValid) {
1271 CommonDecoder::Bucket bucket; 1287 CommonDecoder::Bucket bucket;
1272 const Program* program = manager_.GetProgram(kClientProgramId); 1288 const Program* program = manager_.GetProgram(kClientProgramId);
1273 ASSERT_TRUE(program != NULL); 1289 ASSERT_TRUE(program != NULL);
1274 struct Data { 1290 struct Data {
1275 TransformFeedbackVaryingsHeader header; 1291 TransformFeedbackVaryingsHeader header;
1276 TransformFeedbackVaryingInfo entry[2]; 1292 TransformFeedbackVaryingInfo entry[2];
1277 char name0[4]; 1293 char name0[4];
1278 char name1[8]; 1294 char name1[8];
1279 }; 1295 };
1280 Data data; 1296 Data data;
1281 // The names needs to be of size 4*k-1 to avoid padding in the struct Data. 1297 // The names needs to be of size 4*k-1 to avoid padding in the struct Data.
1282 // This is a testing only problem. 1298 // This is a testing only problem.
1283 const char* kName[] = { "cow", "chicken" }; 1299 const char* kName[] = { "cow", "chicken" };
1300 data.header.transform_feedback_buffer_mode = GL_INTERLEAVED_ATTRIBS;
1284 data.header.num_transform_feedback_varyings = 2; 1301 data.header.num_transform_feedback_varyings = 2;
1285 data.entry[0].size = 1; 1302 data.entry[0].size = 1;
1286 data.entry[0].type = GL_FLOAT_VEC2; 1303 data.entry[0].type = GL_FLOAT_VEC2;
1287 data.entry[0].name_offset = ComputeOffset(&data, data.name0); 1304 data.entry[0].name_offset = ComputeOffset(&data, data.name0);
1288 data.entry[0].name_length = arraysize(data.name0); 1305 data.entry[0].name_length = arraysize(data.name0);
1289 data.entry[1].size = 2; 1306 data.entry[1].size = 2;
1290 data.entry[1].type = GL_FLOAT; 1307 data.entry[1].type = GL_FLOAT;
1291 data.entry[1].name_offset = ComputeOffset(&data, data.name1); 1308 data.entry[1].name_offset = ComputeOffset(&data, data.name1);
1292 data.entry[1].name_length = arraysize(data.name1); 1309 data.entry[1].name_length = arraysize(data.name1);
1293 memcpy(data.name0, kName[0], arraysize(data.name0)); 1310 memcpy(data.name0, kName[0], arraysize(data.name0));
1294 memcpy(data.name1, kName[1], arraysize(data.name1)); 1311 memcpy(data.name1, kName[1], arraysize(data.name1));
1295 1312
1313
1314 EXPECT_CALL(*(gl_.get()),
1315 GetProgramiv(kServiceProgramId,
1316 GL_TRANSFORM_FEEDBACK_BUFFER_MODE,
1317 _))
1318 .WillOnce(SetArgPointee<2>(GL_INTERLEAVED_ATTRIBS))
1319 .RetiresOnSaturation();
1296 EXPECT_CALL(*(gl_.get()), 1320 EXPECT_CALL(*(gl_.get()),
1297 GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _)) 1321 GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
1298 .WillOnce(SetArgPointee<2>(GL_TRUE)) 1322 .WillOnce(SetArgPointee<2>(GL_TRUE))
1299 .RetiresOnSaturation(); 1323 .RetiresOnSaturation();
1300 EXPECT_CALL(*(gl_.get()), 1324 EXPECT_CALL(*(gl_.get()),
1301 GetProgramiv( 1325 GetProgramiv(
1302 kServiceProgramId, GL_TRANSFORM_FEEDBACK_VARYINGS, _)) 1326 kServiceProgramId, GL_TRANSFORM_FEEDBACK_VARYINGS, _))
1303 .WillOnce(SetArgPointee<2>(data.header.num_transform_feedback_varyings)) 1327 .WillOnce(SetArgPointee<2>(data.header.num_transform_feedback_varyings))
1304 .RetiresOnSaturation(); 1328 .RetiresOnSaturation();
1305 GLsizei max_length = 1 + std::max(strlen(kName[0]), strlen(kName[1])); 1329 GLsizei max_length = 1 + std::max(strlen(kName[0]), strlen(kName[1]));
(...skipping 827 matching lines...) Expand 10 before | Expand all | Expand 10 after
2133 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS); 2157 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS);
2134 SetExpectationsForNotCachingProgram(); 2158 SetExpectationsForNotCachingProgram();
2135 SetExpectationsForProgramLoadSuccess(); 2159 SetExpectationsForProgramLoadSuccess();
2136 2160
2137 EXPECT_TRUE(program_->Link(NULL, Program::kCountOnlyStaticallyUsed, 2161 EXPECT_TRUE(program_->Link(NULL, Program::kCountOnlyStaticallyUsed,
2138 base::Bind(&ShaderCacheCb))); 2162 base::Bind(&ShaderCacheCb)));
2139 } 2163 }
2140 2164
2141 } // namespace gles2 2165 } // namespace gles2
2142 } // namespace gpu 2166 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/program_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698