X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Fdali-toolkit-test-utils%2Ftest-graphics-reflection.cpp;h=6cb90bab9199a3b67a5820e5ed3ca5b42332393d;hp=5b3da8c95b46705fe008290ad0c4ed791cc28541;hb=6a1c859e3e6de60e0df17a309cd34020db4599e3;hpb=87ce25ecb5aad1dcbd5b9f02fe1546e35f7b11f9 diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-reflection.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-reflection.cpp index 5b3da8c..6cb90ba 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-reflection.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-reflection.cpp @@ -147,8 +147,6 @@ TestGraphicsReflection::TestGraphicsReflection(TestGlAbstraction& gl, uint32_t p for(const auto& data : mCustomUniforms) { fprintf(stderr, "\ncustom uniforms: %s\n", data.name.c_str()); - mDefaultUniformBlock.members.emplace_back(); - auto& item = mDefaultUniformBlock.members.back(); auto iter = data.name.find("[", 0); int numElements = 1; @@ -161,26 +159,60 @@ TestGraphicsReflection::TestGraphicsReflection(TestGlAbstraction& gl, uint32_t p { numElements = 1; } - - item.name = baseName; - item.binding = 0; - item.bufferIndex = 0; - item.uniformClass = Graphics::UniformClass::UNIFORM; - item.type = data.type; - item.numElements = numElements; - - for(int i = 0; i < numElements; ++i) + iter = data.name.find("]"); + std::string suffix; + if(iter != std::string::npos && iter + 1 != data.name.length()) { - std::stringstream elementNameStream; - elementNameStream << baseName << "[" << i << "]"; + suffix = data.name.substr(iter + 1); // If there is a suffix, it means it is an element of an array of struct + } - item.locations.push_back(gl.GetUniformLocation(programId, elementNameStream.str().c_str())); - item.offsets.push_back(offset); - offset += GetSizeForType(data.type); + if(!suffix.empty()) + { + // Write multiple items + for(int i = 0; i < numElements; ++i) + { + std::stringstream elementNameStream; + elementNameStream << baseName << "[" << i << "]" << suffix; + mDefaultUniformBlock.members.emplace_back(); + auto& item = mDefaultUniformBlock.members.back(); + item.name = elementNameStream.str(); + item.binding = 0; + item.offsets.push_back(offset); + item.locations.push_back(gl.GetUniformLocation(programId, elementNameStream.str().c_str())); + item.bufferIndex = 0; + item.uniformClass = Graphics::UniformClass::UNIFORM; + item.type = data.type; + offset += GetSizeForType(data.type); + } + } + else + { + // Write 1 item with multiple elements + mDefaultUniformBlock.members.emplace_back(); + auto& item = mDefaultUniformBlock.members.back(); + + item.name = baseName; + item.binding = 0; + item.bufferIndex = 0; + item.uniformClass = Graphics::UniformClass::UNIFORM; + item.type = data.type; + item.numElements = numElements; + + for(int i = 0; i < numElements; ++i) + { + std::stringstream elementNameStream; + elementNameStream << baseName << "[" << i << "]"; + item.locations.push_back(gl.GetUniformLocation(programId, elementNameStream.str().c_str())); + item.offsets.push_back(offset); + offset += GetSizeForType(data.type); + } } } else { + // Write 1 item with 1 element + mDefaultUniformBlock.members.emplace_back(); + auto& item = mDefaultUniformBlock.members.back(); item.name = data.name; item.binding = 0; item.offsets.push_back(offset);