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=f2086d6d9a616d9f5798bcc4c991bccaf5742d0c;hb=HEAD;hpb=9898539d73faa8f3eebc454f0084727479ef8ba9 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 f2086d6..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,21 +18,50 @@ #include "test-gl-abstraction.h" #include "test-trace-call-stack.h" +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 { TestGlAbstraction::TestGlAbstraction() -: mBufferTrace(true, std::string("gl")), - mCullFaceTrace(true, "gl"), - mEnableDisableTrace(true, "gl"), - mShaderTrace(true, "gl"), - mTextureTrace(true, std::string("gl")), - mTexParameterTrace(true, "gl"), - mDrawTrace(true, "gl"), - mDepthFunctionTrace(true, "gl"), - mStencilFunctionTrace(true, "gl"), - mScissorTrace(true, "gl"), - mSetUniformTrace(true, "Uniform "), - mViewportTrace(true, "gl") +: mBufferTrace(TRACE, std::string("gl")), + mCullFaceTrace(TRACE, "gl"), + mEnableDisableTrace(TRACE, "gl"), + mShaderTrace(TRACE, "gl"), + mTextureTrace(TRACE, std::string("gl")), + mTexParameterTrace(TRACE, "gl"), + mDrawTrace(TRACE, "gl"), + mDepthFunctionTrace(TRACE, "gl"), + mStencilFunctionTrace(TRACE, "gl"), + mScissorTrace(TRACE, "gl"), + mSetUniformTrace(TRACE, "Uniform "), + mViewportTrace(TRACE, "gl") { Initialize(); } @@ -43,29 +72,32 @@ TestGlAbstraction::~TestGlAbstraction() void TestGlAbstraction::Initialize() { - mCurrentProgram = 0; - mCompileStatus = GL_TRUE; - mLinkStatus = GL_TRUE; - mNumberOfActiveUniforms = 0; - 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; @@ -95,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(); @@ -112,6 +144,41 @@ void TestGlAbstraction::Initialize() { mVertexAttribArrayState[i] = false; } + + mActiveUniforms = std::vector{ + {"uRendererColor", GL_FLOAT, 1}, + {"uCustom", GL_FLOAT_VEC3, 1}, + {"uCustom3", GL_FLOAT_VEC3, 1}, + {"uFadeColor", GL_FLOAT_VEC4, 1}, + {"uUniform1", GL_FLOAT_VEC4, 1}, + {"uUniform2", GL_FLOAT_VEC4, 1}, + {"uUniform3", GL_FLOAT_VEC4, 1}, + {"uFadeProgress", GL_FLOAT, 1}, + {"uANormalMatrix", GL_FLOAT_MAT3, 1}, + {"sEffect", GL_SAMPLER_2D, 1}, + {"sTexture", GL_SAMPLER_2D, 1}, + {"sTextureRect", GL_SAMPLER_2D, 1}, + {"sGloss", GL_SAMPLER_2D, 1}, + {"uColor", GL_FLOAT_VEC4, 1}, + {"uActorColor", GL_FLOAT_VEC4, 1}, + {"uModelMatrix", GL_FLOAT_MAT4, 1}, + {"uModelView", GL_FLOAT_MAT4, 1}, + {"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() @@ -132,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(""); @@ -157,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)