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