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-gl-abstraction.h;h=a1f8405ab4b372f3fd023fbdc149bb4080408b9f;hp=93578038af8ba42d37ae92f54aa8ea214e59685d;hb=6a1c859e3e6de60e0df17a309cd34020db4599e3;hpb=cc7c738325821be41979913e81fffb961656e0c0 diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h index 9357803..a1f8405 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.h @@ -2,7 +2,7 @@ #define TEST_GL_ABSTRACTION_H /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -49,6 +49,13 @@ struct UniformData } }; +struct ActiveUniform +{ + std::string name; + GLenum type; + GLint size; +}; + class DALI_CORE_API TestGlAbstraction : public Dali::Integration::GlAbstraction { public: @@ -621,6 +628,11 @@ public: { mFramebufferStencilAttached = true; } + else if(attachment == GL_DEPTH_STENCIL_ATTACHMENT) + { + mFramebufferStencilAttached = true; + mFramebufferDepthAttached = true; + } } inline void FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) override @@ -749,27 +761,18 @@ public: { } + inline void SetActiveUniforms(const std::vector& uniforms) + { + mActiveUniforms = uniforms; + } + inline void GetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name) override { - switch(index) + if(index < mActiveUniforms.size()) { - case 0: - *length = snprintf(name, bufsize, "sTexture"); - *type = GL_SAMPLER_2D; - *size = 1; - break; - case 1: - *length = snprintf(name, bufsize, "sEffect"); - *type = GL_SAMPLER_2D; - *size = 1; - break; - case 2: - *length = snprintf(name, bufsize, "sGloss"); - *type = GL_SAMPLER_2D; - *size = 1; - break; - default: - break; + *length = snprintf(name, bufsize, "%s", mActiveUniforms[index].name.c_str()); + *type = mActiveUniforms[index].type; + *size = mActiveUniforms[index].size; } } @@ -837,7 +840,7 @@ public: *params = mProgramBinaryLength; break; case GL_ACTIVE_UNIFORMS: - *params = mNumberOfActiveUniforms; + *params = mActiveUniforms.size(); break; case GL_ACTIVE_UNIFORM_MAX_LENGTH: *params = 100; @@ -910,8 +913,8 @@ public: if(it2 == uniformIDs.end()) { // Uniform not found, so add it... - uniformIDs[name] = mLastUniformIdUsed++; - return mLastUniformIdUsed; + uniformIDs[name] = ++mLastUniformIdUsed; + return uniformIDs[name]; } return it2->second; @@ -981,35 +984,37 @@ public: namedParams["program"] << program; mShaderTrace.PushCall("LinkProgram", out.str(), namedParams); - mNumberOfActiveUniforms = 3; - - GetUniformLocation(program, "uRendererColor"); - GetUniformLocation(program, "uCustom"); - GetUniformLocation(program, "uCustom3"); - GetUniformLocation(program, "uFadeColor"); - GetUniformLocation(program, "uUniform1"); - GetUniformLocation(program, "uUniform2"); - GetUniformLocation(program, "uUniform3"); - GetUniformLocation(program, "uFadeProgress"); - GetUniformLocation(program, "uANormalMatrix"); - GetUniformLocation(program, "sEffect"); - GetUniformLocation(program, "sTexture"); - GetUniformLocation(program, "sTextureRect"); - GetUniformLocation(program, "sGloss"); - GetUniformLocation(program, "uColor"); - GetUniformLocation(program, "uModelMatrix"); - GetUniformLocation(program, "uModelView"); - GetUniformLocation(program, "uMvpMatrix"); - GetUniformLocation(program, "uNormalMatrix"); - GetUniformLocation(program, "uProjection"); - GetUniformLocation(program, "uSize"); - GetUniformLocation(program, "uViewMatrix"); - GetUniformLocation(program, "uLightCameraProjectionMatrix"); - GetUniformLocation(program, "uLightCameraViewMatrix"); + for(const auto& uniform : mActiveUniforms) + { + GetUniformLocation(program, uniform.name.c_str()); + } for(const auto& uniform : mCustomUniformData) { - GetUniformLocation(program, uniform.name.c_str()); + auto iter = uniform.name.find("["); + auto name = uniform.name; + if(iter != std::string::npos) + { + name = uniform.name.substr(0, iter); + auto arrayCount = std::stoi(uniform.name.substr(iter + 1)); + iter = uniform.name.find("]"); + std::string suffix; + if(iter != std::string::npos && iter + 1 != uniform.name.length()) + { + suffix = uniform.name.substr(iter + 1); // If there is a suffix, it means its an element of an array of struct + } + + for(int i = 0; i < arrayCount; ++i) + { + std::stringstream nss; + nss << name << "[" << i << "]" << suffix; + GetUniformLocation(program, nss.str().c_str()); // Generate a GL loc per element + } + } + else + { + GetUniformLocation(program, name.c_str()); + } } } @@ -2465,14 +2470,13 @@ public: // TEST FUNCTIONS mBufferSubDataCalls.clear(); } -private: +public: GLuint mCurrentProgram; GLuint mCompileStatus; BufferDataCalls mBufferDataCalls; BufferSubDataCalls mBufferSubDataCalls; GLvoid* mMappedBuffer{nullptr}; GLuint mLinkStatus; - GLint mNumberOfActiveUniforms; GLenum mGetErrorResult; GLubyte* mGetStringResult; GLboolean mIsBufferResult; @@ -2547,8 +2551,8 @@ private: typedef std::map UniformIDMap; typedef std::map ProgramUniformMap; ProgramUniformMap mUniforms; - - std::vector mCustomUniformData{}; + std::vector mActiveUniforms; + std::vector mCustomUniformData{}; template struct ProgramUniformValue : public std::map >