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.cpp;h=fc1eb656f4d043193df8a22c755e10cd6071a29c;hp=e99de5cc2722967c30c86de25860796b62370ba4;hb=HEAD;hpb=2d1b408c88f2a66f0ead23f40a7ebfb0597fc027 diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.cpp index e99de5c..fc1eb65 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-gl-abstraction.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2024 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. @@ -18,8 +18,34 @@ #include "test-gl-abstraction.h" #include "test-trace-call-stack.h" -static const bool TRACE{ - false}; +static const bool TRACE{false}; + +uint32_t GetGLDataTypeSize(GLenum type) +{ + // There are many more types than what are covered here, but + // they are not supported in dali. + switch(type) + { + case GL_FLOAT: // "float", 1 float, 4 bytes + return 4; + case GL_FLOAT_VEC2: // "vec2", 2 floats, 8 bytes + return 8; + case GL_FLOAT_VEC3: // "vec3", 3 floats, 12 bytes + return 12; + case GL_FLOAT_VEC4: // "vec4", 4 floats, 16 bytes + return 16; + case GL_INT: // "int", 1 integer, 4 bytes + return 4; + case GL_FLOAT_MAT2: // "mat2", 4 floats, 16 bytes + return 16; + case GL_FLOAT_MAT3: // "mat3", 3 vec3, 36 bytes + return 36; + case GL_FLOAT_MAT4: // "mat4", 4 vec4, 64 bytes + return 64; + default: + return 0; + } +} namespace Dali { @@ -46,28 +72,32 @@ TestGlAbstraction::~TestGlAbstraction() void TestGlAbstraction::Initialize() { - mCurrentProgram = 0; - mCompileStatus = GL_TRUE; - mLinkStatus = GL_TRUE; - mGetErrorResult = 0; - mGetStringResult = NULL; - mIsBufferResult = 0; - mIsEnabledResult = 0; - mIsFramebufferResult = 0; - mIsProgramResult = 0; - mIsRenderbufferResult = 0; - mIsShaderResult = 0; - mIsTextureResult = 0; - mActiveTextureUnit = 0; - mCheckFramebufferStatusResult = 0; - mFramebufferStatus = 0; - mFramebufferDepthAttached = 0; - mFramebufferStencilAttached = 0; - mFramebufferColorAttachmentCount = 0; - mFrameBufferColorStatus = 0; - mNumBinaryFormats = 0; - mBinaryFormats = 0; - mProgramBinaryLength = 0; + mCurrentProgram = 0; + mCompileStatus = GL_TRUE; + mLinkStatus = GL_TRUE; + mGetErrorResult = 0; + mGetStringResult = NULL; + mIsBufferResult = 0; + mIsEnabledResult = 0; + mIsFramebufferResult = 0; + mIsProgramResult = 0; + mIsRenderbufferResult = 0; + mIsShaderResult = 0; + mIsTextureResult = 0; + mActiveTextureUnit = 0; + mCheckFramebufferStatusResult = 0; + mFramebufferStatus = 0; + mFramebufferDepthAttached = 0; + mFramebufferStencilAttached = 0; + mFramebufferDepthStencilAttached = 0; + mFramebufferColorAttachmentCount = 0; + mFrameBufferColorStatus = 0; + mFramebufferDepthAttachmentCount = 0; + mFramebufferStencilAttachmentCount = 0; + mFramebufferDepthStencilAttachmentCount = 0; + mNumBinaryFormats = 0; + mBinaryFormats = 0; + mProgramBinaryLength = 0; mVertexAttribArrayChanged = false; mGetProgramBinaryCalled = false; @@ -97,9 +127,9 @@ void TestGlAbstraction::Initialize() mProgramUniforms3f.clear(); mProgramUniforms4f.clear(); - mAttribLocs.clear(); - mAttribLocs.push_back("aPosition"); - mAttribLocs.push_back("aTexCoord"); + mAttribLocs = {"aPosition", "aTexCoord"}; + mAttribTypes = {GL_FLOAT, GL_FLOAT}; + mCullFaceTrace.Reset(); mDepthFunctionTrace.Reset(); mEnableDisableTrace.Reset(); @@ -136,10 +166,19 @@ void TestGlAbstraction::Initialize() {"uMvpMatrix", GL_FLOAT_MAT4, 1}, {"uNormalMatrix", GL_FLOAT_MAT4, 1}, {"uProjection", GL_FLOAT_MAT4, 1}, + {"uScale", GL_FLOAT_VEC3, 1}, {"uSize", GL_FLOAT_VEC3, 1}, {"uViewMatrix", GL_FLOAT_MAT4, 1}, {"uLightCameraProjectionMatrix", GL_FLOAT_MAT4, 1}, {"uLightCameraViewMatrix", GL_FLOAT_MAT4, 1}}; + + int offset = 0; + for(uint32_t i = 0; i < mActiveUniforms.size(); ++i) + { + mActiveUniforms[i].offset = offset; + offset += mActiveUniforms[i].size * GetGLDataTypeSize(mActiveUniforms[i].type); + } + // WARNING: IF YOU CHANGE THIS LIST, ALSO CHANGE UNIFORMS IN test-graphics-reflection.cpp } void TestGlAbstraction::PreRender() @@ -160,11 +199,21 @@ bool TestGlAbstraction::IsAdvancedBlendEquationSupported() return true; } +bool TestGlAbstraction::IsMultisampledRenderToTextureSupported() +{ + return true; +} + bool TestGlAbstraction::IsBlendEquationSupported(DevelBlendEquation::Type blendEquation) { return true; } +uint32_t TestGlAbstraction::GetShaderLanguageVersion() +{ + return mShaderLanguageVersion; +} + std::string TestGlAbstraction::GetShaderVersionPrefix() { return std::string(""); @@ -185,6 +234,17 @@ bool TestGlAbstraction::TextureRequiresConverting(const GLenum imageGlFormat, co return ((imageGlFormat == GL_RGB) && (textureGlFormat == GL_RGBA)); } +void TestGlAbstraction::SetActiveUniforms(const std::vector& uniforms) +{ + mActiveUniforms = uniforms; + int offset = 0; + for(uint32_t i = 0; i < uniforms.size(); ++i) + { + mActiveUniforms[i].offset = offset; + offset += mActiveUniforms[i].size * GetGLDataTypeSize(mActiveUniforms[i].type); + } +} + } // namespace Dali bool BlendEnabled(const Dali::TraceCallStack& callStack)