X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Fdali-toolkit-test-utils%2Ftest-graphics-buffer.cpp;h=d8a1b1a668aafe85bcbe8d679dac5a19abeaf929;hb=5ab09ec658e7578ef30238920a2edfadb43b60e9;hp=26960787e4c4493bf9ad9888a140ddc7f21751ef;hpb=57818b285f2485c7acd86d92f642f726b4a2bcca;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-buffer.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-buffer.cpp index 2696078..d8a1b1a 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-buffer.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-buffer.cpp @@ -15,8 +15,10 @@ */ #include "test-graphics-buffer.h" - #include +#include "dali-test-suite-utils.h" +#include "test-graphics-program.h" +#include "test-graphics-reflection.h" namespace Dali { @@ -25,7 +27,7 @@ TestGraphicsBuffer::TestGraphicsBuffer(TraceCallStack& callStack, TestGlAbstract mGl(glAbstraction), mUsage(usage) { - memory.reserve(size); + memory.resize(size); mGl.GetBufferTrace().EnableLogging(true); } @@ -53,8 +55,8 @@ void TestGraphicsBuffer::Upload(uint32_t offset, uint32_t size) std::ostringstream o; o << offset << ", " << size; TraceCallStack::NamedParams namedParams; - namedParams["offset"] = offset; - namedParams["size"] = size; + namedParams["offset"] << offset; + namedParams["size"] << size; mCallStack.PushCall("Buffer::Upload", o.str(), namedParams); if(size <= memory.size() && mCreated) { @@ -78,4 +80,69 @@ GLenum TestGraphicsBuffer::GetTarget() return target; } +void TestGraphicsBuffer::BindAsUniformBuffer(const TestGraphicsProgram* program) const +{ + auto* reflection = static_cast(&program->GetReflection()); + + Graphics::UniformBlockInfo uboInfo{}; + reflection->GetUniformBlock(0, uboInfo); + + auto* data = memory.data(); + + for(const auto& member : uboInfo.members) + { + auto type = reflection->GetMemberType(0, member.location); + switch(type) + { + case Property::VECTOR4: + { + auto value = *reinterpret_cast(data + member.offset); + mGl.Uniform4f(member.location, value.x, value.y, value.z, value.w); + break; + } + case Property::VECTOR3: + { + auto value = *reinterpret_cast(data + member.offset); + mGl.Uniform3f(member.location, value.x, value.y, value.z); + break; + } + case Property::VECTOR2: + { + auto value = *reinterpret_cast(data + member.offset); + mGl.Uniform2f(member.location, value.x, value.y); + break; + } + case Property::FLOAT: + { + auto value = *reinterpret_cast(data + member.offset); + mGl.Uniform1f(member.location, value); + break; + } + case Property::INTEGER: + { + auto ptr = reinterpret_cast(data + member.offset); + auto value = *ptr; + mGl.Uniform1i(member.location, value); + break; + } + case Property::MATRIX: + { + auto value = reinterpret_cast(data + member.offset); + mGl.UniformMatrix4fv(member.location, 1, GL_FALSE, value); + break; + } + case Property::MATRIX3: + { + auto value = reinterpret_cast(data + member.offset); + mGl.UniformMatrix3fv(member.location, 1, GL_FALSE, value); + break; + } + default: + { + fprintf(stderr, "\n%s type not found\n", member.name.c_str()); + } + } + } +} + } // namespace Dali