OLD | NEW |
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 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/client/program_info_manager.h" | 5 #include "gpu/command_buffer/client/program_info_manager.h" |
6 #include "testing/gtest/include/gtest/gtest.h" | 6 #include "testing/gtest/include/gtest/gtest.h" |
7 | 7 |
8 namespace { | 8 namespace { |
9 | 9 |
10 uint32 ComputeOffset(const void* start, const void* position) { | 10 uint32 ComputeOffset(const void* start, const void* position) { |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 data->entry[1].offset = 6; | 141 data->entry[1].offset = 6; |
142 data->entry[1].array_stride = 7; | 142 data->entry[1].array_stride = 7; |
143 data->entry[1].matrix_stride = 8; | 143 data->entry[1].matrix_stride = 8; |
144 data->entry[1].is_row_major = 1; | 144 data->entry[1].is_row_major = 1; |
145 } | 145 } |
146 | 146 |
147 void SetupTransformFeedbackVaryingsData(TransformFeedbackVaryingsData* data) { | 147 void SetupTransformFeedbackVaryingsData(TransformFeedbackVaryingsData* data) { |
148 // The names needs to be of size 4*k-1 to avoid padding in the struct Data. | 148 // The names needs to be of size 4*k-1 to avoid padding in the struct Data. |
149 // This is a testing only problem. | 149 // This is a testing only problem. |
150 const char* kName[] = { "cow", "chicken" }; | 150 const char* kName[] = { "cow", "chicken" }; |
| 151 data->header.transform_feedback_buffer_mode = GL_SEPARATE_ATTRIBS; |
151 data->header.num_transform_feedback_varyings = 2; | 152 data->header.num_transform_feedback_varyings = 2; |
152 data->entry[0].size = 1; | 153 data->entry[0].size = 1; |
153 data->entry[0].type = GL_FLOAT_VEC2; | 154 data->entry[0].type = GL_FLOAT_VEC2; |
154 data->entry[0].name_offset = ComputeOffset(data, data->name0); | 155 data->entry[0].name_offset = ComputeOffset(data, data->name0); |
155 data->entry[0].name_length = arraysize(data->name0); | 156 data->entry[0].name_length = arraysize(data->name0); |
156 data->entry[1].size = 2; | 157 data->entry[1].size = 2; |
157 data->entry[1].type = GL_FLOAT; | 158 data->entry[1].type = GL_FLOAT; |
158 data->entry[1].name_offset = ComputeOffset(data, data->name1); | 159 data->entry[1].name_offset = ComputeOffset(data, data->name1); |
159 data->entry[1].name_length = arraysize(data->name1); | 160 data->entry[1].name_length = arraysize(data->name1); |
160 memcpy(data->name0, kName[0], arraysize(data->name0)); | 161 memcpy(data->name0, kName[0], arraysize(data->name0)); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 SetupTransformFeedbackVaryingsData(&data); | 259 SetupTransformFeedbackVaryingsData(&data); |
259 const std::string kName[] = { data.name0, data.name1 }; | 260 const std::string kName[] = { data.name0, data.name1 }; |
260 std::vector<int8> result(sizeof(data)); | 261 std::vector<int8> result(sizeof(data)); |
261 memcpy(&result[0], &data, sizeof(data)); | 262 memcpy(&result[0], &data, sizeof(data)); |
262 EXPECT_FALSE(program_->IsCached( | 263 EXPECT_FALSE(program_->IsCached( |
263 ProgramInfoManager::kES3TransformFeedbackVaryings)); | 264 ProgramInfoManager::kES3TransformFeedbackVaryings)); |
264 program_->UpdateES3TransformFeedbackVaryings(result); | 265 program_->UpdateES3TransformFeedbackVaryings(result); |
265 EXPECT_TRUE(program_->IsCached( | 266 EXPECT_TRUE(program_->IsCached( |
266 ProgramInfoManager::kES3TransformFeedbackVaryings)); | 267 ProgramInfoManager::kES3TransformFeedbackVaryings)); |
267 | 268 |
| 269 GLint transform_feedback_buffer_mode = 0; |
| 270 EXPECT_TRUE(program_->GetProgramiv( |
| 271 GL_TRANSFORM_FEEDBACK_BUFFER_MODE, &transform_feedback_buffer_mode)); |
| 272 EXPECT_EQ(data.header.transform_feedback_buffer_mode, |
| 273 static_cast<uint32_t>(transform_feedback_buffer_mode)); |
268 GLint transform_feedback_varying_count = 0; | 274 GLint transform_feedback_varying_count = 0; |
269 EXPECT_TRUE(program_->GetProgramiv( | 275 EXPECT_TRUE(program_->GetProgramiv( |
270 GL_TRANSFORM_FEEDBACK_VARYINGS, &transform_feedback_varying_count)); | 276 GL_TRANSFORM_FEEDBACK_VARYINGS, &transform_feedback_varying_count)); |
271 EXPECT_EQ(data.header.num_transform_feedback_varyings, | 277 EXPECT_EQ(data.header.num_transform_feedback_varyings, |
272 static_cast<uint32_t>(transform_feedback_varying_count)); | 278 static_cast<uint32_t>(transform_feedback_varying_count)); |
273 GLint max_name_length = 0; | 279 GLint max_name_length = 0; |
274 EXPECT_TRUE(program_->GetProgramiv( | 280 EXPECT_TRUE(program_->GetProgramiv( |
275 GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH, &max_name_length)); | 281 GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH, &max_name_length)); |
276 for (uint32_t ii = 0; ii < data.header.num_transform_feedback_varyings; | 282 for (uint32_t ii = 0; ii < data.header.num_transform_feedback_varyings; |
277 ++ii) { | 283 ++ii) { |
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
540 EXPECT_EQ(data_es2.uniforms[ii].size, size[ii]); | 546 EXPECT_EQ(data_es2.uniforms[ii].size, size[ii]); |
541 EXPECT_EQ(data_es2.uniforms[ii].type, static_cast<uint32_t>(type[ii])); | 547 EXPECT_EQ(data_es2.uniforms[ii].type, static_cast<uint32_t>(type[ii])); |
542 EXPECT_EQ(data_es2.uniforms[ii].name_length + 1, | 548 EXPECT_EQ(data_es2.uniforms[ii].name_length + 1, |
543 static_cast<uint32_t>(name_length[ii])); | 549 static_cast<uint32_t>(name_length[ii])); |
544 } | 550 } |
545 } | 551 } |
546 | 552 |
547 } // namespace gles2 | 553 } // namespace gles2 |
548 } // namespace gpu | 554 } // namespace gpu |
549 | 555 |
OLD | NEW |