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

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

Issue 1419393005: command_buffer: Make inactive bound uniforms reserve the location (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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
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/test_helper.h" 5 #include "gpu/command_buffer/service/test_helper.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 717 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 EXPECT_CALL(*gl, GetAttribLocation(service_id, StrEq(info.name))) 728 EXPECT_CALL(*gl, GetAttribLocation(service_id, StrEq(info.name)))
729 .WillOnce(Return(info.location)) 729 .WillOnce(Return(info.location))
730 .RetiresOnSaturation(); 730 .RetiresOnSaturation();
731 } 731 }
732 } 732 }
733 EXPECT_CALL(*gl, 733 EXPECT_CALL(*gl,
734 GetProgramiv(service_id, GL_ACTIVE_UNIFORMS, _)) 734 GetProgramiv(service_id, GL_ACTIVE_UNIFORMS, _))
735 .WillOnce(SetArgumentPointee<2>(num_uniforms)) 735 .WillOnce(SetArgumentPointee<2>(num_uniforms))
736 .RetiresOnSaturation(); 736 .RetiresOnSaturation();
737 737
738 size_t max_uniform_len = 0; 738 if (num_uniforms > 0) {
739 for (size_t ii = 0; ii < num_uniforms; ++ii) { 739 size_t max_uniform_len = 0;
740 size_t len = strlen(uniforms[ii].name) + 1; 740 for (size_t ii = 0; ii < num_uniforms; ++ii) {
741 max_uniform_len = std::max(max_uniform_len, len); 741 size_t len = strlen(uniforms[ii].name) + 1;
742 } 742 max_uniform_len = std::max(max_uniform_len, len);
743 EXPECT_CALL(*gl, 743 }
744 GetProgramiv(service_id, GL_ACTIVE_UNIFORM_MAX_LENGTH, _)) 744 EXPECT_CALL(*gl, GetProgramiv(service_id, GL_ACTIVE_UNIFORM_MAX_LENGTH, _))
745 .WillOnce(SetArgumentPointee<2>(max_uniform_len)) 745 .WillOnce(SetArgumentPointee<2>(max_uniform_len))
746 .RetiresOnSaturation();
747 for (size_t ii = 0; ii < num_uniforms; ++ii) {
748 const UniformInfo& info = uniforms[ii];
749 EXPECT_CALL(*gl,
750 GetActiveUniform(service_id, ii,
751 max_uniform_len, _, _, _, _))
752 .WillOnce(DoAll(
753 SetArgumentPointee<3>(strlen(info.name)),
754 SetArgumentPointee<4>(info.size),
755 SetArgumentPointee<5>(info.type),
756 SetArrayArgument<6>(info.name,
757 info.name + strlen(info.name) + 1)))
758 .RetiresOnSaturation(); 746 .RetiresOnSaturation();
759 }
760
761 for (int pass = 0; pass < 2; ++pass) {
762 for (size_t ii = 0; ii < num_uniforms; ++ii) { 747 for (size_t ii = 0; ii < num_uniforms; ++ii) {
763 const UniformInfo& info = uniforms[ii]; 748 const UniformInfo& info = uniforms[ii];
764 if (pass == 0 && info.real_location != -1) { 749 EXPECT_CALL(*gl,
750 GetActiveUniform(service_id, ii, max_uniform_len, _, _, _, _))
751 .WillOnce(DoAll(SetArgumentPointee<3>(strlen(info.name)),
752 SetArgumentPointee<4>(info.size),
753 SetArgumentPointee<5>(info.type),
754 SetArrayArgument<6>(
755 info.name, info.name + strlen(info.name) + 1)))
756 .RetiresOnSaturation();
757
758 if (info.real_location != -1) {
765 EXPECT_CALL(*gl, GetUniformLocation(service_id, StrEq(info.name))) 759 EXPECT_CALL(*gl, GetUniformLocation(service_id, StrEq(info.name)))
766 .WillOnce(Return(info.real_location)) 760 .WillOnce(Return(info.real_location))
767 .RetiresOnSaturation(); 761 .RetiresOnSaturation();
768 } 762 }
769 if ((pass == 0 && info.desired_location >= 0) || 763 if (info.size > 1) {
770 (pass == 1 && info.desired_location < 0)) { 764 std::string base_name = info.name;
771 if (info.size > 1) { 765 size_t array_pos = base_name.rfind("[0]");
772 std::string base_name = info.name; 766 if (base_name.size() > 3 && array_pos == base_name.size() - 3) {
773 size_t array_pos = base_name.rfind("[0]"); 767 base_name = base_name.substr(0, base_name.size() - 3);
774 if (base_name.size() > 3 && array_pos == base_name.size() - 3) { 768 }
775 base_name = base_name.substr(0, base_name.size() - 3); 769 for (GLsizei jj = 1; jj < info.size; ++jj) {
776 } 770 std::string element_name(std::string(base_name) + "[" +
777 for (GLsizei jj = 1; jj < info.size; ++jj) { 771 base::IntToString(jj) + "]");
778 std::string element_name( 772 EXPECT_CALL(*gl, GetUniformLocation(service_id, StrEq(element_name)))
779 std::string(base_name) + "[" + base::IntToString(jj) + "]"); 773 .WillOnce(Return(info.real_location + jj * 2))
780 EXPECT_CALL(*gl, GetUniformLocation( 774 .RetiresOnSaturation();
781 service_id, StrEq(element_name)))
782 .WillOnce(Return(info.real_location + jj * 2))
783 .RetiresOnSaturation();
784 }
785 } 775 }
786 } 776 }
787 } 777 }
788 } 778 }
789 779
790 if (feature_info->feature_flags().chromium_path_rendering) { 780 if (feature_info->feature_flags().chromium_path_rendering) {
791 EXPECT_CALL(*gl, GetProgramInterfaceiv(service_id, GL_FRAGMENT_INPUT_NV, 781 EXPECT_CALL(*gl, GetProgramInterfaceiv(service_id, GL_FRAGMENT_INPUT_NV,
792 GL_ACTIVE_RESOURCES, _)) 782 GL_ACTIVE_RESOURCES, _))
793 .WillOnce(SetArgumentPointee<3>(int(num_varyings))) 783 .WillOnce(SetArgumentPointee<3>(int(num_varyings)))
794 .RetiresOnSaturation(); 784 .RetiresOnSaturation();
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
1019 gfx::SetGLImplementation(implementation); 1009 gfx::SetGLImplementation(implementation);
1020 } 1010 }
1021 1011
1022 ScopedGLImplementationSetter::~ScopedGLImplementationSetter() { 1012 ScopedGLImplementationSetter::~ScopedGLImplementationSetter() {
1023 gfx::SetGLImplementation(old_implementation_); 1013 gfx::SetGLImplementation(old_implementation_);
1024 } 1014 }
1025 1015
1026 } // namespace gles2 1016 } // namespace gles2
1027 } // namespace gpu 1017 } // namespace gpu
1028 1018
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698