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=dea1c9078ca1983aff2314e282dac575bbbc2754;hp=b094fdec5b62c86a4d189e9aa5a16bb92be2bff8;hb=75fdb5f9730fa6f6723c517691c9778fb646d082;hpb=7798252184031d2d767d64376ab194870190fbf1 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 b094fde..dea1c90 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 @@ -22,6 +22,8 @@ #include #include #include +#include +#include // for strcmp // INTERNAL INCLUDES #include @@ -52,7 +54,7 @@ public: void Initialize(); void PreRender(); - void PostRender(unsigned int timeDelta); + void PostRender(); /* OpenGL ES 2.0 */ @@ -83,6 +85,8 @@ public: inline void BindFramebuffer( GLenum target, GLuint framebuffer ) { + //Add 010 bit; + mFramebufferStatus |= 2; } inline void BindRenderbuffer( GLenum target, GLuint renderbuffer ) @@ -212,19 +216,45 @@ public: inline void BufferData(GLenum target, GLsizeiptr size, const void* data, GLenum usage) { + mBufferDataCalls.push_back(size); } inline void BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void* data) { + mBufferSubDataCalls.push_back(size); } inline GLenum CheckFramebufferStatus(GLenum target) { + //If it has the three last bits set to 1 - 111, then the three minimum functions to create a + //Framebuffer texture have been called + if( mFramebufferStatus == 7 ) + { + return GL_FRAMEBUFFER_COMPLETE; + } + return mCheckFramebufferStatusResult; } + inline GLenum CheckFramebufferColorAttachment() + { + return mFramebufferColorAttached; + } + + inline GLenum CheckFramebufferDepthAttachment() + { + return mFramebufferDepthAttached; + } + + inline GLenum CheckFramebufferStencilAttachment() + { + return mFramebufferStencilAttached; + } + inline void Clear(GLbitfield mask) { + mClearCount++; + mLastClearBitMask = mask; } inline void ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) @@ -379,7 +409,7 @@ public: { std::stringstream out; out << cap; - mCullFaceTrace.PushCall("Disable", out.str()); + mEnableDisableTrace.PushCall("Disable", out.str()); } inline void DisableVertexAttribArray(GLuint index) @@ -405,7 +435,7 @@ public: { std::stringstream out; out << cap; - mCullFaceTrace.PushCall("Enable", out.str()); + mEnableDisableTrace.PushCall("Enable", out.str()); } inline void EnableVertexAttribArray(GLuint index) @@ -423,10 +453,26 @@ public: inline void FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) { + if (attachment == GL_DEPTH_ATTACHMENT) + { + mFramebufferDepthAttached = true; + } + else if (attachment == GL_STENCIL_ATTACHMENT) + { + mFramebufferStencilAttached = true; + } } inline void FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { + //Add 100 bit; + mFramebufferStatus |= 4; + + //We check 4 attachment colors + if ((attachment == GL_COLOR_ATTACHMENT0) || (attachment == GL_COLOR_ATTACHMENT1) || (attachment == GL_COLOR_ATTACHMENT2) || (attachment == GL_COLOR_ATTACHMENT4)) + { + mFramebufferColorAttached = true; + } } inline void FrontFace(GLenum mode) @@ -445,10 +491,21 @@ public: inline void GenFramebuffers(GLsizei n, GLuint* framebuffers) { + for( int i = 0; i < n; i++ ) + { + framebuffers[i] = i + 1; + } + + //Add 001 bit, this function needs to be called the first one in the chain + mFramebufferStatus = 1; } inline void GenRenderbuffers(GLsizei n, GLuint* renderbuffers) { + for( int i = 0; i < n; i++ ) + { + renderbuffers[i] = i + 1; + } } /** @@ -489,7 +546,7 @@ public: out << ", "; } } - mTextureTrace.PushCall("GenTexture", out.str()); + mTextureTrace.PushCall("GenTextures", out.str()); } inline void GetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name) @@ -1460,6 +1517,7 @@ public: inline void GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary) { + mGetProgramBinaryCalled = true; } inline void ProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length) @@ -1525,6 +1583,11 @@ public: // TEST FUNCTIONS inline void ResetCullFaceCallStack() { mCullFaceTrace.Reset(); } inline TraceCallStack& GetCullFaceTrace() { return mCullFaceTrace; } + //Methods for Enable/Disable call verification + inline void EnableEnableDisableCallTrace(bool enable) { mEnableDisableTrace.Enable(enable); } + inline void ResetEnableDisableCallStack() { mEnableDisableTrace.Reset(); } + inline TraceCallStack& GetEnableDisableTrace() { return mEnableDisableTrace; } + //Methods for Shader verification inline void EnableShaderCallTrace(bool enable) { mShaderTrace.Enable(enable); } inline void ResetShaderCallStack() { mShaderTrace.Reset(); } @@ -1546,6 +1609,30 @@ public: // TEST FUNCTIONS inline TraceCallStack& GetDrawTrace() { return mDrawTrace; } template + inline bool GetUniformValue( const char* name, T& value ) const + { + for( ProgramUniformMap::const_iterator program_it = mUniforms.begin(); + program_it != mUniforms.end(); + ++program_it ) + { + const UniformIDMap &uniformIDs = program_it->second; + + UniformIDMap::const_iterator uniform_it = uniformIDs.find( name ); + if( uniform_it != uniformIDs.end() ) + { + // found one matching uniform name, lets check the value... + GLuint programId = program_it->first; + GLint uniformId = uniform_it->second; + + const ProgramUniformValue &mProgramUniforms = GetProgramUniformsForType( value ); + return mProgramUniforms.GetUniformValue( programId, uniformId, value ); + } + } + return false; + } + + + template inline bool CheckUniformValue( const char* name, const T& value ) const { for( ProgramUniformMap::const_iterator program_it = mUniforms.begin(); @@ -1570,7 +1657,7 @@ public: // TEST FUNCTIONS } } - fprintf(stderr, "Not found, printing possible values:" ); + fprintf(stderr, "Not found, printing possible values:\n" ); for( ProgramUniformMap::const_iterator program_it = mUniforms.begin(); program_it != mUniforms.end(); ++program_it ) @@ -1590,7 +1677,7 @@ public: // TEST FUNCTIONS { std::stringstream out; out << uniform_it->first << ": " << origValue; - fprintf(stderr, "%s", out.str().c_str() ); + fprintf(stderr, "%s\n", out.str().c_str() ); } } } @@ -1623,8 +1710,6 @@ public: // TEST FUNCTIONS return false; } - - inline GLuint GetLastShaderCompiled() const { return mLastShaderCompiled; @@ -1635,6 +1720,11 @@ public: // TEST FUNCTIONS return mLastProgramIdUsed; } + inline GLbitfield GetLastClearMask() const + { + return mLastClearBitMask; + } + enum AttribType { ATTRIB_UNKNOWN = -1, @@ -1660,9 +1750,23 @@ public: // TEST FUNCTIONS // Methods to check scissor tests inline const ScissorParams& GetScissorParams() const { return mScissorParams; } + inline bool GetProgramBinaryCalled() const { return mGetProgramBinaryCalled; } + + inline unsigned int GetClearCountCalled() const { return mClearCount; } + + typedef std::vector BufferDataCalls; + inline const BufferDataCalls& GetBufferDataCalls() const { return mBufferDataCalls; } + inline void ResetBufferDataCalls() { mBufferDataCalls.clear(); } + + typedef std::vector BufferSubDataCalls; + inline const BufferSubDataCalls& GetBufferSubDataCalls() const { return mBufferSubDataCalls; } + inline void ResetBufferSubDataCalls() { mBufferSubDataCalls.clear(); } + private: GLuint mCurrentProgram; GLuint mCompileStatus; + BufferDataCalls mBufferDataCalls; + BufferSubDataCalls mBufferSubDataCalls; GLuint mLinkStatus; GLint mGetAttribLocationResult; GLenum mGetErrorResult; @@ -1676,14 +1780,21 @@ private: GLboolean mIsTextureResult; GLenum mActiveTextureUnit; GLenum mCheckFramebufferStatusResult; + GLint mFramebufferStatus; + GLenum mFramebufferColorAttached; + GLenum mFramebufferDepthAttached; + GLenum mFramebufferStencilAttached; GLint mNumBinaryFormats; GLint mBinaryFormats; GLint mProgramBinaryLength; bool mVertexAttribArrayState[MAX_ATTRIBUTE_CACHE_SIZE]; bool mVertexAttribArrayChanged; // whether the vertex attrib array has been changed + bool mGetProgramBinaryCalled; typedef std::map< GLuint, std::string> ShaderSourceMap; ShaderSourceMap mShaderSources; GLuint mLastShaderCompiled; + GLbitfield mLastClearBitMask; + unsigned int mClearCount; Vector4 mLastBlendColor; GLenum mLastBlendEquationRgb; @@ -1707,6 +1818,7 @@ private: ActiveTextureType mActiveTextures[ MIN_TEXTURE_UNIT_LIMIT ]; TraceCallStack mCullFaceTrace; + TraceCallStack mEnableDisableTrace; TraceCallStack mShaderTrace; TraceCallStack mTextureTrace; TraceCallStack mTexParamaterTrace;