1 #ifndef __TEST_GL_ABSTRACTION_H__
2 #define __TEST_GL_ABSTRACTION_H__
5 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
26 #include <cstring> // for strcmp
29 #include <dali/public-api/dali-core.h>
30 #include <dali/integration-api/core.h>
31 #include <dali/integration-api/gl-abstraction.h>
32 #include <dali/integration-api/gl-defines.h>
33 #include "test-trace-call-stack.h"
38 static const unsigned int MAX_ATTRIBUTE_CACHE_SIZE = 64;
39 static const char *mStdAttribs[MAX_ATTRIBUTE_CACHE_SIZE] =
41 "aPosition", // ATTRIB_POSITION
42 "aNormal", // ATTRIB_NORMAL
43 "aTexCoord", // ATTRIB_TEXCOORD
44 "aColor", // ATTRIB_COLOR
45 "aBoneWeights", // ATTRIB_BONE_WEIGHTS
46 "aBoneIndices" // ATTRIB_BONE_INDICES
49 class DALI_IMPORT_API TestGlAbstraction: public Dali::Integration::GlAbstraction
57 void PostRender(unsigned int timeDelta);
61 inline void ActiveTexture( GLenum textureUnit )
63 mActiveTextureUnit = textureUnit - GL_TEXTURE0;
66 inline GLenum GetActiveTextureUnit() const
68 return mActiveTextureUnit + GL_TEXTURE0;
71 inline void AttachShader( GLuint program, GLuint shader )
73 std::stringstream out;
74 out << program << ", " << shader;
75 mShaderTrace.PushCall("AttachShader", out.str());
78 inline void BindAttribLocation( GLuint program, GLuint index, const char* name )
82 inline void BindBuffer( GLenum target, GLuint buffer )
86 inline void BindFramebuffer( GLenum target, GLuint framebuffer )
90 inline void BindRenderbuffer( GLenum target, GLuint renderbuffer )
95 * This method can be used by test cases, to query the texture IDs that have been bound by BindTexture.
96 * @return A vector containing the IDs that were bound.
98 inline const std::vector<GLuint>& GetBoundTextures() const
100 return mBoundTextures;
104 * Query the texture IDs that have been bound with BindTexture, with a specific active texture unit.
105 * @param[in] activeTextureUnit The specific active texture unit.
106 * @return A vector containing the IDs that were bound.
108 inline const std::vector<GLuint>& GetBoundTextures( GLuint activeTextureUnit ) const
110 return mActiveTextures[ activeTextureUnit - GL_TEXTURE0 ].mBoundTextures;
114 * This method can be used by test cases, to clear the record of texture IDs that have been bound by BindTexture.
116 inline void ClearBoundTextures()
118 mBoundTextures.clear();
120 for( unsigned int i=0; i<MIN_TEXTURE_UNIT_LIMIT; ++i )
122 mActiveTextures[ i ].mBoundTextures.clear();
126 inline void BindTexture( GLenum target, GLuint texture )
128 // Record the bound textures for future checks
131 mBoundTextures.push_back( texture );
133 if( mActiveTextureUnit < MIN_TEXTURE_UNIT_LIMIT )
135 mActiveTextures[ mActiveTextureUnit ].mBoundTextures.push_back( texture );
139 std::stringstream out;
140 out << target << ", " << texture;
141 mTextureTrace.PushCall("BindTexture", out.str());
144 inline void BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
146 mLastBlendColor.r = red;
147 mLastBlendColor.g = green;
148 mLastBlendColor.b = blue;
149 mLastBlendColor.a = alpha;
152 inline const Vector4& GetLastBlendColor() const
154 return mLastBlendColor;
157 inline void BlendEquation( GLenum mode )
159 mLastBlendEquationRgb = mode;
160 mLastBlendEquationAlpha = mode;
163 inline void BlendEquationSeparate( GLenum modeRgb, GLenum modeAlpha )
165 mLastBlendEquationRgb = modeRgb;
166 mLastBlendEquationAlpha = modeAlpha;
169 inline GLenum GetLastBlendEquationRgb() const
171 return mLastBlendEquationRgb;
174 inline GLenum GetLastBlendEquationAlpha() const
176 return mLastBlendEquationAlpha;
179 inline void BlendFunc(GLenum sfactor, GLenum dfactor)
181 mLastBlendFuncSrcRgb = sfactor;
182 mLastBlendFuncDstRgb = dfactor;
183 mLastBlendFuncSrcAlpha = sfactor;
184 mLastBlendFuncDstAlpha = dfactor;
187 inline void BlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
189 mLastBlendFuncSrcRgb = srcRGB;
190 mLastBlendFuncDstRgb = dstRGB;
191 mLastBlendFuncSrcAlpha = srcAlpha;
192 mLastBlendFuncDstAlpha = dstAlpha;
195 inline GLenum GetLastBlendFuncSrcRgb() const
197 return mLastBlendFuncSrcRgb;
200 inline GLenum GetLastBlendFuncDstRgb() const
202 return mLastBlendFuncDstRgb;
205 inline GLenum GetLastBlendFuncSrcAlpha() const
207 return mLastBlendFuncSrcAlpha;
210 inline GLenum GetLastBlendFuncDstAlpha() const
212 return mLastBlendFuncDstAlpha;
215 inline void BufferData(GLenum target, GLsizeiptr size, const void* data, GLenum usage)
217 mBufferDataCalls.push_back(size);
220 inline void BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void* data)
222 mBufferSubDataCalls.push_back(size);
225 inline GLenum CheckFramebufferStatus(GLenum target)
227 return mCheckFramebufferStatusResult;
230 inline void Clear(GLbitfield mask)
233 mLastClearBitMask = mask;
236 inline void ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
240 inline void ClearDepthf(GLclampf depth)
244 inline void ClearStencil(GLint s)
248 inline void ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
252 inline void CompileShader(GLuint shader)
254 std::stringstream out;
256 mShaderTrace.PushCall("CompileShader", out.str());
259 inline void CompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data)
263 inline void CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data)
267 inline void CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
271 inline void CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
275 inline GLuint CreateProgram(void)
277 mShaderTrace.PushCall("CreateProgram", "");
279 ++mLastProgramIdUsed;
280 mUniforms[mLastProgramIdUsed] = UniformIDMap();
281 return mLastProgramIdUsed;
284 inline GLuint CreateShader(GLenum type)
286 std::stringstream out;
288 mShaderTrace.PushCall("CreateShader", out.str());
290 return ++mLastShaderIdUsed;
293 inline void CullFace(GLenum mode)
295 std::stringstream out;
297 mCullFaceTrace.PushCall("CullFace", out.str());
300 inline void DeleteBuffers(GLsizei n, const GLuint* buffers)
304 inline void DeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
308 inline void DeleteProgram(GLuint program)
310 std::stringstream out;
312 mShaderTrace.PushCall("DeleteProgram", out.str());
315 inline void DeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
319 inline void DeleteShader(GLuint shader)
321 std::stringstream out;
323 mShaderTrace.PushCall("DeleteShader", out.str());
326 inline void DeleteTextures(GLsizei n, const GLuint* textures)
328 std::stringstream out;
329 out << n << ", " << textures << " = [" ;
331 for(GLsizei i=0; i<n; i++)
333 out << textures[i] << ", " ;
334 mDeletedTextureIds.push_back(textures[i]);
337 mTextureTrace.PushCall("DeleteTextures", out.str());
340 inline bool CheckNoTexturesDeleted()
342 return mDeletedTextureIds.size() == 0;
345 inline bool CheckTextureDeleted( GLuint textureId )
349 for(std::vector<GLuint>::iterator iter=mDeletedTextureIds.begin(); iter != mDeletedTextureIds.end(); ++iter)
351 if(*iter == textureId)
360 inline void ClearDeletedTextures()
362 mDeletedTextureIds.clear();
365 inline void DepthFunc(GLenum func)
369 inline void DepthMask(GLboolean flag)
373 inline void DepthRangef(GLclampf zNear, GLclampf zFar)
377 inline void DetachShader(GLuint program, GLuint shader)
379 std::stringstream out;
380 out << program << ", " << shader;
381 mShaderTrace.PushCall("DetachShader", out.str());
384 inline void Disable(GLenum cap)
386 std::stringstream out;
388 mCullFaceTrace.PushCall("Disable", out.str());
391 inline void DisableVertexAttribArray(GLuint index)
393 SetVertexAttribArray( index, false );
396 inline void DrawArrays(GLenum mode, GLint first, GLsizei count)
398 std::stringstream out;
399 out << mode << ", " << first << ", " << count;
400 mDrawTrace.PushCall("DrawArrays", out.str());
403 inline void DrawElements(GLenum mode, GLsizei count, GLenum type, const void* indices)
405 std::stringstream out;
406 out << mode << ", " << count << ", " << type << ", indices";
407 mDrawTrace.PushCall("DrawElements", out.str());
410 inline void Enable(GLenum cap)
412 std::stringstream out;
414 mCullFaceTrace.PushCall("Enable", out.str());
417 inline void EnableVertexAttribArray(GLuint index)
419 SetVertexAttribArray( index, true);
422 inline void Finish(void)
426 inline void Flush(void)
430 inline void FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
434 inline void FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
438 inline void FrontFace(GLenum mode)
442 inline void GenBuffers(GLsizei n, GLuint* buffers)
444 // avoids an assert in GpuBuffers
448 inline void GenerateMipmap(GLenum target)
452 inline void GenFramebuffers(GLsizei n, GLuint* framebuffers)
456 inline void GenRenderbuffers(GLsizei n, GLuint* renderbuffers)
461 * This method can be used by test cases, to manipulate the texture IDs generated by GenTextures.
462 * @param[in] ids A vector containing the next IDs to be generated
464 inline void SetNextTextureIds( const std::vector<GLuint>& ids )
466 mNextTextureIds = ids;
469 inline const std::vector<GLuint>& GetNextTextureIds()
471 return mNextTextureIds;
474 inline void GenTextures(GLsizei n, GLuint* textures)
476 for( int i=0; i<n; ++i )
478 if( !mNextTextureIds.empty() )
480 *(textures+i) = mNextTextureIds[0];
481 mNextTextureIds.erase( mNextTextureIds.begin() );
485 *(textures+i) = ++mLastAutoTextureIdUsed;
489 std::stringstream out;
490 for(int i=0; i<n; i++)
498 mTextureTrace.PushCall("GenTextures", out.str());
501 inline void GetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
505 inline void GetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
509 inline void GetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
513 inline int GetAttribLocation(GLuint program, const char* name)
515 std::string attribName(name);
517 for( unsigned int i = 0; i < ATTRIB_TYPE_LAST; ++i )
519 if( mStdAttribs[i] == attribName )
525 // 0 is a valid location
529 inline void GetBooleanv(GLenum pname, GLboolean* params)
533 inline void GetBufferParameteriv(GLenum target, GLenum pname, GLint* params)
537 inline GLenum GetError(void)
539 return mGetErrorResult;
542 inline void GetFloatv(GLenum pname, GLfloat* params)
546 inline void GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params)
550 inline void GetIntegerv(GLenum pname, GLint* params)
554 case GL_MAX_TEXTURE_SIZE:
557 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
560 case GL_NUM_PROGRAM_BINARY_FORMATS_OES:
561 *params = mNumBinaryFormats;
563 case GL_PROGRAM_BINARY_FORMATS_OES:
564 *params = mBinaryFormats;
569 inline void GetProgramiv(GLuint program, GLenum pname, GLint* params)
573 *params = mLinkStatus;
575 case GL_PROGRAM_BINARY_LENGTH_OES:
576 *params = mProgramBinaryLength;
581 inline void GetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, char* infolog)
586 inline void GetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params)
590 inline void GetShaderiv(GLuint shader, GLenum pname, GLint* params)
593 case GL_COMPILE_STATUS:
594 *params = mCompileStatus;
599 inline void GetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog)
603 inline void GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
607 inline const GLubyte* GetString(GLenum name)
609 return mGetStringResult;
612 inline void GetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
616 inline void GetTexParameteriv(GLenum target, GLenum pname, GLint* params)
620 inline void GetUniformfv(GLuint program, GLint location, GLfloat* params)
624 inline void GetUniformiv(GLuint program, GLint location, GLint* params)
628 inline GLint GetUniformLocation(GLuint program, const char* name)
630 ProgramUniformMap::iterator it = mUniforms.find(program);
631 if( it == mUniforms.end() )
633 // Not a valid program ID
634 mGetErrorResult = GL_INVALID_OPERATION;
638 UniformIDMap& uniformIDs = it->second;
639 UniformIDMap::iterator it2 = uniformIDs.find( name );
640 if( it2 == uniformIDs.end() )
642 // Uniform not found, so add it...
643 uniformIDs[name] = ++mLastUniformIdUsed;
644 return mLastUniformIdUsed;
650 inline void GetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params)
654 inline void GetVertexAttribiv(GLuint index, GLenum pname, GLint* params)
658 inline void GetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer)
662 inline void Hint(GLenum target, GLenum mode)
666 inline GLboolean IsBuffer(GLuint buffer)
668 return mIsBufferResult;
671 inline GLboolean IsEnabled(GLenum cap)
673 return mIsEnabledResult;
676 inline GLboolean IsFramebuffer(GLuint framebuffer)
678 return mIsFramebufferResult;
681 inline GLboolean IsProgram(GLuint program)
683 return mIsProgramResult;
686 inline GLboolean IsRenderbuffer(GLuint renderbuffer)
688 return mIsRenderbufferResult;
691 inline GLboolean IsShader(GLuint shader)
693 return mIsShaderResult;
696 inline GLboolean IsTexture(GLuint texture)
698 return mIsTextureResult;
701 inline void LineWidth(GLfloat width)
705 inline void LinkProgram(GLuint program)
707 std::stringstream out;
709 mShaderTrace.PushCall("LinkProgram", out.str());
712 inline void PixelStorei(GLenum pname, GLint param)
716 inline void PolygonOffset(GLfloat factor, GLfloat units)
720 inline void ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels)
724 inline void ReleaseShaderCompiler(void)
728 inline void RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
732 inline void SampleCoverage(GLclampf value, GLboolean invert)
736 inline void Scissor(GLint x, GLint y, GLsizei width, GLsizei height)
738 mScissorParams.x = x;
739 mScissorParams.y = y;
740 mScissorParams.width = width;
741 mScissorParams.height = height;
744 inline void ShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLsizei length)
748 inline void ShaderSource(GLuint shader, GLsizei count, const char** string, const GLint* length)
750 std::string stringBuilder;
751 for(int i = 0; i < count; ++i)
753 stringBuilder += string[i];
755 mShaderSources[shader] = stringBuilder;
756 mLastShaderCompiled = shader;
759 inline void GetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, char* source)
761 const std::string shaderSource = mShaderSources[shader];
762 if( static_cast<int>(shaderSource.length()) < bufsize )
764 strcpy(source, shaderSource.c_str());
765 *length = shaderSource.length();
769 *length = bufsize -1;
770 strncpy(source, shaderSource.c_str(), *length);
771 source[*length] = 0x0;
775 inline std::string GetShaderSource(GLuint shader)
777 return mShaderSources[shader];
780 inline void StencilFunc(GLenum func, GLint ref, GLuint mask)
784 inline void StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
788 inline void StencilMask(GLuint mask)
792 inline void StencilMaskSeparate(GLenum face, GLuint mask)
796 inline void StencilOp(GLenum fail, GLenum zfail, GLenum zpass)
800 inline void StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
804 inline void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels)
806 std::stringstream out;
807 out << width << ", " << height;
808 mTextureTrace.PushCall("TexImage2D", out.str());
811 inline void TexParameterf(GLenum target, GLenum pname, GLfloat param)
813 std::stringstream out;
814 out << target << ", " << pname << ", " << param;
815 mTexParamaterTrace.PushCall("TexParameterf", out.str());
818 inline void TexParameterfv(GLenum target, GLenum pname, const GLfloat* params)
820 std::stringstream out;
821 out << target << ", " << pname << ", " << params[0];
822 mTexParamaterTrace.PushCall("TexParameterfv", out.str());
825 inline void TexParameteri(GLenum target, GLenum pname, GLint param)
827 std::stringstream out;
828 out << target << ", " << pname << ", " << param;
829 mTexParamaterTrace.PushCall("TexParameteri", out.str());
832 inline void TexParameteriv(GLenum target, GLenum pname, const GLint* params)
834 std::stringstream out;
835 out << target << ", " << pname << ", " << params[0];
836 mTexParamaterTrace.PushCall("TexParameteriv", out.str());
839 inline void TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels)
841 std::stringstream out;
842 out << xoffset << ", " << yoffset << ", " << width << ", " << height;
843 mTextureTrace.PushCall("TexSubImage2D", out.str());
846 inline void Uniform1f(GLint location, GLfloat x)
848 if( ! mProgramUniforms1f.SetUniformValue( mCurrentProgram, location, x ) )
850 mGetErrorResult = GL_INVALID_OPERATION;
854 inline void Uniform1fv(GLint location, GLsizei count, const GLfloat* v)
856 for( int i = 0; i < count; ++i )
858 if( ! mProgramUniforms1f.SetUniformValue( mCurrentProgram, location, v[i] ) )
860 mGetErrorResult = GL_INVALID_OPERATION;
866 inline void Uniform1i(GLint location, GLint x)
868 if( ! mProgramUniforms1i.SetUniformValue( mCurrentProgram, location, x ) )
870 mGetErrorResult = GL_INVALID_OPERATION;
874 inline void Uniform1iv(GLint location, GLsizei count, const GLint* v)
876 for( int i = 0; i < count; ++i )
878 if( ! mProgramUniforms1i.SetUniformValue( mCurrentProgram,
882 mGetErrorResult = GL_INVALID_OPERATION;
888 inline void Uniform2f(GLint location, GLfloat x, GLfloat y)
890 if( ! mProgramUniforms2f.SetUniformValue( mCurrentProgram,
894 mGetErrorResult = GL_INVALID_OPERATION;
898 inline void Uniform2fv(GLint location, GLsizei count, const GLfloat* v)
900 for( int i = 0; i < count; ++i )
902 if( ! mProgramUniforms2f.SetUniformValue( mCurrentProgram,
904 Vector2( v[2*i], v[2*i+1] ) ) )
906 mGetErrorResult = GL_INVALID_OPERATION;
912 inline void Uniform2i(GLint location, GLint x, GLint y)
916 inline void Uniform2iv(GLint location, GLsizei count, const GLint* v)
920 inline void Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z)
922 if( ! mProgramUniforms3f.SetUniformValue( mCurrentProgram,
924 Vector3( x, y, z ) ) )
926 mGetErrorResult = GL_INVALID_OPERATION;
930 inline void Uniform3fv(GLint location, GLsizei count, const GLfloat* v)
932 for( int i = 0; i < count; ++i )
934 if( ! mProgramUniforms3f.SetUniformValue(
937 Vector3( v[3*i], v[3*i+1], v[3*i+2] ) ) )
939 mGetErrorResult = GL_INVALID_OPERATION;
945 inline void Uniform3i(GLint location, GLint x, GLint y, GLint z)
949 inline void Uniform3iv(GLint location, GLsizei count, const GLint* v)
953 inline void Uniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
955 if( ! mProgramUniforms4f.SetUniformValue( mCurrentProgram,
957 Vector4( x, y, z, w ) ) )
959 mGetErrorResult = GL_INVALID_OPERATION;
963 inline void Uniform4fv(GLint location, GLsizei count, const GLfloat* v)
965 for( int i = 0; i < count; ++i )
967 if( ! mProgramUniforms4f.SetUniformValue(
970 Vector4( v[4*i], v[4*i+1], v[4*i+2], v[4*i+3] ) ) )
972 mGetErrorResult = GL_INVALID_OPERATION;
978 inline void Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w)
982 inline void Uniform4iv(GLint location, GLsizei count, const GLint* v)
986 inline void UniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
990 inline void UniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
992 for( int i = 0; i < count; ++i )
994 if( ! mProgramUniformsMat3.SetUniformValue(
997 Matrix3( value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], value[8] ) ) )
999 mGetErrorResult = GL_INVALID_OPERATION;
1005 inline void UniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1007 for( int i = 0; i < count; ++i )
1009 if( ! mProgramUniformsMat4.SetUniformValue(
1014 mGetErrorResult = GL_INVALID_OPERATION;
1020 inline void UseProgram(GLuint program)
1022 mCurrentProgram = program;
1025 inline void ValidateProgram(GLuint program)
1029 inline void VertexAttrib1f(GLuint indx, GLfloat x)
1033 inline void VertexAttrib1fv(GLuint indx, const GLfloat* values)
1037 inline void VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y)
1041 inline void VertexAttrib2fv(GLuint indx, const GLfloat* values)
1045 inline void VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z)
1049 inline void VertexAttrib3fv(GLuint indx, const GLfloat* values)
1053 inline void VertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
1057 inline void VertexAttrib4fv(GLuint indx, const GLfloat* values)
1061 inline void VertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr)
1065 inline void Viewport(GLint x, GLint y, GLsizei width, GLsizei height)
1071 inline void ReadBuffer(GLenum mode)
1075 inline void DrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices)
1079 inline void TexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
1083 inline void TexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels)
1087 inline void CopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
1091 inline void CompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
1095 inline void CompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data)
1099 inline void GenQueries(GLsizei n, GLuint* ids)
1103 inline void DeleteQueries(GLsizei n, const GLuint* ids)
1107 inline GLboolean IsQuery(GLuint id)
1112 inline void BeginQuery(GLenum target, GLuint id)
1116 inline void EndQuery(GLenum target)
1120 inline void GetQueryiv(GLenum target, GLenum pname, GLint* params)
1124 inline void GetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params)
1128 inline GLboolean UnmapBuffer(GLenum target)
1133 inline void GetBufferPointerv(GLenum target, GLenum pname, GLvoid** params)
1137 inline void DrawBuffers(GLsizei n, const GLenum* bufs)
1141 inline void UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1145 inline void UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1149 inline void UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1153 inline void UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1157 inline void UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1161 inline void UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1165 inline void BlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
1169 inline void RenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
1173 inline void FramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
1177 inline GLvoid* MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
1182 inline void FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
1186 inline void BindVertexArray(GLuint array)
1190 inline void DeleteVertexArrays(GLsizei n, const GLuint* arrays)
1194 inline void GenVertexArrays(GLsizei n, GLuint* arrays)
1198 inline GLboolean IsVertexArray(GLuint array)
1203 inline void GetIntegeri_v(GLenum target, GLuint index, GLint* data)
1207 inline void BeginTransformFeedback(GLenum primitiveMode)
1211 inline void EndTransformFeedback(void)
1215 inline void BindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
1219 inline void BindBufferBase(GLenum target, GLuint index, GLuint buffer)
1223 inline void TransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode)
1227 inline void GetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name)
1231 inline void VertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer)
1235 inline void GetVertexAttribIiv(GLuint index, GLenum pname, GLint* params)
1239 inline void GetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params)
1243 inline void VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w)
1247 inline void VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
1251 inline void VertexAttribI4iv(GLuint index, const GLint* v)
1255 inline void VertexAttribI4uiv(GLuint index, const GLuint* v)
1259 inline void GetUniformuiv(GLuint program, GLint location, GLuint* params)
1263 inline GLint GetFragDataLocation(GLuint program, const GLchar *name)
1268 inline void Uniform1ui(GLint location, GLuint v0)
1272 inline void Uniform2ui(GLint location, GLuint v0, GLuint v1)
1276 inline void Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2)
1280 inline void Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
1284 inline void Uniform1uiv(GLint location, GLsizei count, const GLuint* value)
1288 inline void Uniform2uiv(GLint location, GLsizei count, const GLuint* value)
1292 inline void Uniform3uiv(GLint location, GLsizei count, const GLuint* value)
1296 inline void Uniform4uiv(GLint location, GLsizei count, const GLuint* value)
1300 inline void ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint* value)
1304 inline void ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint* value)
1308 inline void ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat* value)
1312 inline void ClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
1316 inline const GLubyte* GetStringi(GLenum name, GLuint index)
1321 inline void CopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
1325 inline void GetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices)
1329 inline void GetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params)
1333 inline GLuint GetUniformBlockIndex(GLuint program, const GLchar* uniformBlockName)
1335 return GL_INVALID_INDEX;
1338 inline void GetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params)
1342 inline void GetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName)
1346 inline void UniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
1350 inline void DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount)
1354 inline void DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instanceCount)
1358 inline GLsync FenceSync(GLenum condition, GLbitfield flags)
1363 inline GLboolean IsSync(GLsync sync)
1368 inline void DeleteSync(GLsync sync)
1372 inline GLenum ClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
1377 inline void WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
1381 inline void GetInteger64v(GLenum pname, GLint64* params)
1385 inline void GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values)
1389 inline void GetInteger64i_v(GLenum target, GLuint index, GLint64* data)
1393 inline void GetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params)
1397 inline void GenSamplers(GLsizei count, GLuint* samplers)
1401 inline void DeleteSamplers(GLsizei count, const GLuint* samplers)
1405 inline GLboolean IsSampler(GLuint sampler)
1410 inline void BindSampler(GLuint unit, GLuint sampler)
1414 inline void SamplerParameteri(GLuint sampler, GLenum pname, GLint param)
1418 inline void SamplerParameteriv(GLuint sampler, GLenum pname, const GLint* param)
1422 inline void SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
1426 inline void SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat* param)
1430 inline void GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params)
1434 inline void GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params)
1438 inline void VertexAttribDivisor(GLuint index, GLuint divisor)
1442 inline void BindTransformFeedback(GLenum target, GLuint id)
1446 inline void DeleteTransformFeedbacks(GLsizei n, const GLuint* ids)
1450 inline void GenTransformFeedbacks(GLsizei n, GLuint* ids)
1454 inline GLboolean IsTransformFeedback(GLuint id)
1459 inline void PauseTransformFeedback(void)
1463 inline void ResumeTransformFeedback(void)
1467 inline void GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary)
1469 mGetProgramBinaryCalled = true;
1472 inline void ProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length)
1476 inline void ProgramParameteri(GLuint program, GLenum pname, GLint value)
1480 inline void InvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments)
1484 inline void InvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height)
1488 inline void TexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
1492 inline void TexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
1496 inline void GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params)
1500 public: // TEST FUNCTIONS
1501 inline void SetCompileStatus( GLuint value ) { mCompileStatus = value; }
1502 inline void SetLinkStatus( GLuint value ) { mLinkStatus = value; }
1503 inline void SetGetAttribLocationResult( int result) { mGetAttribLocationResult = result; }
1504 inline void SetGetErrorResult( GLenum result) { mGetErrorResult = result; }
1505 inline void SetGetStringResult( GLubyte* result) { mGetStringResult = result; }
1506 inline void SetIsBufferResult( GLboolean result) { mIsBufferResult = result; }
1507 inline void SetIsEnabledResult( GLboolean result) { mIsEnabledResult = result; }
1508 inline void SetIsFramebufferResult( GLboolean result) { mIsFramebufferResult = result; }
1509 inline void SetIsProgramResult( GLboolean result) { mIsProgramResult = result; }
1510 inline void SetIsRenderbufferResult( GLboolean result) { mIsRenderbufferResult = result; }
1511 inline void SetIsShaderResult( GLboolean result) { mIsShaderResult = result; }
1512 inline void SetIsTextureResult( GLboolean result) { mIsTextureResult = result; }
1513 inline void SetCheckFramebufferStatusResult( GLenum result) { mCheckFramebufferStatusResult = result; }
1514 inline void SetNumBinaryFormats( GLint numFormats ) { mNumBinaryFormats = numFormats; }
1515 inline void SetBinaryFormats( GLint binaryFormats ) { mBinaryFormats = binaryFormats; }
1516 inline void SetProgramBinaryLength( GLint length ) { mProgramBinaryLength = length; }
1518 inline bool GetVertexAttribArrayState(GLuint index)
1520 if( index >= MAX_ATTRIBUTE_CACHE_SIZE )
1525 return mVertexAttribArrayState[ index ];
1527 inline void ClearVertexAttribArrayChanged() { mVertexAttribArrayChanged = false; }
1528 inline bool GetVertexAttribArrayChanged() { return mVertexAttribArrayChanged; }
1530 //Methods for CullFace verification
1531 inline void EnableCullFaceCallTrace(bool enable) { mCullFaceTrace.Enable(enable); }
1532 inline void ResetCullFaceCallStack() { mCullFaceTrace.Reset(); }
1533 inline TraceCallStack& GetCullFaceTrace() { return mCullFaceTrace; }
1535 //Methods for Shader verification
1536 inline void EnableShaderCallTrace(bool enable) { mShaderTrace.Enable(enable); }
1537 inline void ResetShaderCallStack() { mShaderTrace.Reset(); }
1538 inline TraceCallStack& GetShaderTrace() { return mShaderTrace; }
1540 //Methods for Texture verification
1541 inline void EnableTextureCallTrace(bool enable) { mTextureTrace.Enable(enable); }
1542 inline void ResetTextureCallStack() { mTextureTrace.Reset(); }
1543 inline TraceCallStack& GetTextureTrace() { return mTextureTrace; }
1545 //Methods for Texture verification
1546 inline void EnableTexParameterCallTrace(bool enable) { mTexParamaterTrace.Enable(enable); }
1547 inline void ResetTexParameterCallStack() { mTexParamaterTrace.Reset(); }
1548 inline TraceCallStack& GetTexParameterTrace() { return mTexParamaterTrace; }
1550 //Methods for Draw verification
1551 inline void EnableDrawCallTrace(bool enable) { mDrawTrace.Enable(enable); }
1552 inline void ResetDrawCallStack() { mDrawTrace.Reset(); }
1553 inline TraceCallStack& GetDrawTrace() { return mDrawTrace; }
1555 template <typename T>
1556 inline bool GetUniformValue( const char* name, T& value ) const
1558 for( ProgramUniformMap::const_iterator program_it = mUniforms.begin();
1559 program_it != mUniforms.end();
1562 const UniformIDMap &uniformIDs = program_it->second;
1564 UniformIDMap::const_iterator uniform_it = uniformIDs.find( name );
1565 if( uniform_it != uniformIDs.end() )
1567 // found one matching uniform name, lets check the value...
1568 GLuint programId = program_it->first;
1569 GLint uniformId = uniform_it->second;
1571 const ProgramUniformValue<T> &mProgramUniforms = GetProgramUniformsForType( value );
1572 return mProgramUniforms.GetUniformValue( programId, uniformId, value );
1579 template <typename T>
1580 inline bool CheckUniformValue( const char* name, const T& value ) const
1582 for( ProgramUniformMap::const_iterator program_it = mUniforms.begin();
1583 program_it != mUniforms.end();
1586 const UniformIDMap &uniformIDs = program_it->second;
1588 UniformIDMap::const_iterator uniform_it = uniformIDs.find( name );
1589 if( uniform_it != uniformIDs.end() )
1591 // found one matching uniform name, lets check the value...
1592 GLuint programId = program_it->first;
1593 GLint uniformId = uniform_it->second;
1595 const ProgramUniformValue<T> &mProgramUniforms = GetProgramUniformsForType( value );
1596 if( mProgramUniforms.CheckUniformValue( programId, uniformId, value ) )
1598 // the value matches
1604 fprintf(stderr, "Not found, printing possible values:\n" );
1605 for( ProgramUniformMap::const_iterator program_it = mUniforms.begin();
1606 program_it != mUniforms.end();
1609 const UniformIDMap &uniformIDs = program_it->second;
1611 UniformIDMap::const_iterator uniform_it = uniformIDs.find( name );
1612 if( uniform_it != uniformIDs.end() )
1614 // found one matching uniform name, lets check the value...
1615 GLuint programId = program_it->first;
1616 GLint uniformId = uniform_it->second;
1618 const ProgramUniformValue<T> &mProgramUniforms = GetProgramUniformsForType( value );
1620 if ( mProgramUniforms.GetUniformValue(programId, uniformId, origValue) )
1622 std::stringstream out;
1623 out << uniform_it->first << ": " << origValue;
1624 fprintf(stderr, "%s\n", out.str().c_str() );
1631 template <typename T>
1632 inline bool GetUniformValue( GLuint programId, GLuint uniformId, T& outValue) const
1634 const ProgramUniformValue<T> &mProgramUniforms = GetProgramUniformsForType( outValue );
1635 return mProgramUniforms.GetUniformValue( programId, uniformId, outValue );
1638 inline bool GetUniformIds( const char* name, GLuint& programId, GLuint& uniformId ) const
1640 for( ProgramUniformMap::const_iterator program_it = mUniforms.begin();
1641 program_it != mUniforms.end();
1644 const UniformIDMap &uniformIDs = program_it->second;
1646 UniformIDMap::const_iterator uniform_it = uniformIDs.find( name );
1647 if( uniform_it != uniformIDs.end() )
1649 programId = program_it->first;
1650 uniformId = uniform_it->second;
1657 inline GLuint GetLastShaderCompiled() const
1659 return mLastShaderCompiled;
1662 inline GLuint GetLastProgramCreated() const
1664 return mLastProgramIdUsed;
1667 inline GLbitfield GetLastClearMask() const
1669 return mLastClearBitMask;
1674 ATTRIB_UNKNOWN = -1,
1679 ATTRIB_BONE_WEIGHTS,
1680 ATTRIB_BONE_INDICES,
1684 struct ScissorParams
1691 ScissorParams() : x( 0 ), y( 0 ), width( 0 ), height( 0 ) { }
1694 // Methods to check scissor tests
1695 inline const ScissorParams& GetScissorParams() const { return mScissorParams; }
1697 inline bool GetProgramBinaryCalled() const { return mGetProgramBinaryCalled; }
1699 inline unsigned int GetClearCountCalled() const { return mClearCount; }
1701 typedef std::vector<size_t> BufferDataCalls;
1702 inline const BufferDataCalls& GetBufferDataCalls() const { return mBufferDataCalls; }
1703 inline void ResetBufferDataCalls() { mBufferDataCalls.clear(); }
1705 typedef std::vector<size_t> BufferSubDataCalls;
1706 inline const BufferSubDataCalls& GetBufferSubDataCalls() const { return mBufferSubDataCalls; }
1707 inline void ResetBufferSubDataCalls() { mBufferSubDataCalls.clear(); }
1710 GLuint mCurrentProgram;
1711 GLuint mCompileStatus;
1712 BufferDataCalls mBufferDataCalls;
1713 BufferSubDataCalls mBufferSubDataCalls;
1715 GLint mGetAttribLocationResult;
1716 GLenum mGetErrorResult;
1717 GLubyte* mGetStringResult;
1718 GLboolean mIsBufferResult;
1719 GLboolean mIsEnabledResult;
1720 GLboolean mIsFramebufferResult;
1721 GLboolean mIsProgramResult;
1722 GLboolean mIsRenderbufferResult;
1723 GLboolean mIsShaderResult;
1724 GLboolean mIsTextureResult;
1725 GLenum mActiveTextureUnit;
1726 GLenum mCheckFramebufferStatusResult;
1727 GLint mNumBinaryFormats;
1728 GLint mBinaryFormats;
1729 GLint mProgramBinaryLength;
1730 bool mVertexAttribArrayState[MAX_ATTRIBUTE_CACHE_SIZE];
1731 bool mVertexAttribArrayChanged; // whether the vertex attrib array has been changed
1732 bool mGetProgramBinaryCalled;
1733 typedef std::map< GLuint, std::string> ShaderSourceMap;
1734 ShaderSourceMap mShaderSources;
1735 GLuint mLastShaderCompiled;
1736 GLbitfield mLastClearBitMask;
1737 unsigned int mClearCount;
1739 Vector4 mLastBlendColor;
1740 GLenum mLastBlendEquationRgb;
1741 GLenum mLastBlendEquationAlpha;
1742 GLenum mLastBlendFuncSrcRgb;
1743 GLenum mLastBlendFuncDstRgb;
1744 GLenum mLastBlendFuncSrcAlpha;
1745 GLenum mLastBlendFuncDstAlpha;
1747 // Data for manipulating the IDs returned by GenTextures
1748 GLuint mLastAutoTextureIdUsed;
1749 std::vector<GLuint> mNextTextureIds;
1750 std::vector<GLuint> mDeletedTextureIds;
1751 std::vector<GLuint> mBoundTextures;
1753 struct ActiveTextureType
1755 std::vector<GLuint> mBoundTextures;
1758 ActiveTextureType mActiveTextures[ MIN_TEXTURE_UNIT_LIMIT ];
1760 TraceCallStack mCullFaceTrace;
1761 TraceCallStack mShaderTrace;
1762 TraceCallStack mTextureTrace;
1763 TraceCallStack mTexParamaterTrace;
1764 TraceCallStack mDrawTrace;
1766 // Shaders & Uniforms
1767 GLuint mLastShaderIdUsed;
1768 GLuint mLastProgramIdUsed;
1769 GLuint mLastUniformIdUsed;
1770 typedef std::map< std::string, GLint > UniformIDMap;
1771 typedef std::map< GLuint, UniformIDMap > ProgramUniformMap;
1772 ProgramUniformMap mUniforms;
1774 template <typename T>
1775 struct ProgramUniformValue : public std::map< GLuint, std::map< GLint, T > >
1778 typedef std::map< GLint, T > UniformValueMap;
1779 typedef std::map< GLuint, UniformValueMap > Map;
1781 bool SetUniformValue( GLuint program, GLuint uniform, const T& value )
1788 typename Map::iterator it = Map::find( program );
1789 if( it == Map::end() )
1791 // if its the first uniform for this program add it
1792 std::pair< typename Map::iterator, bool > result =
1793 Map::insert( typename Map::value_type( program, UniformValueMap() ) );
1797 UniformValueMap& uniforms = it->second;
1798 uniforms[uniform] = value;
1803 bool CheckUniformValue( GLuint program, GLuint uniform, const T& value ) const
1806 if ( GetUniformValue( program, uniform, uniformValue ) )
1808 return value == uniformValue;
1814 bool GetUniformValue( GLuint program, GLuint uniform, T& value ) const
1821 typename Map::const_iterator it = Map::find( program );
1822 if( it == Map::end() )
1824 // Uniform values always initialised as 0
1829 const UniformValueMap& uniforms = it->second;
1830 typename UniformValueMap::const_iterator it2 = uniforms.find( uniform );
1831 if( it2 == uniforms.end() )
1833 // Uniform values always initialised as 0
1837 value = it2->second;
1844 ProgramUniformValue<int> mProgramUniforms1i;
1845 ProgramUniformValue<float> mProgramUniforms1f;
1846 ProgramUniformValue<Vector2> mProgramUniforms2f;
1847 ProgramUniformValue<Vector3> mProgramUniforms3f;
1848 ProgramUniformValue<Vector4> mProgramUniforms4f;
1849 ProgramUniformValue<Matrix> mProgramUniformsMat4;
1850 ProgramUniformValue<Matrix3> mProgramUniformsMat3;
1852 inline const ProgramUniformValue<int>& GetProgramUniformsForType( const int ) const
1854 return mProgramUniforms1i;
1856 inline const ProgramUniformValue<float>& GetProgramUniformsForType( const float ) const
1858 return mProgramUniforms1f;
1860 inline const ProgramUniformValue<Vector2>& GetProgramUniformsForType( const Vector2& ) const
1862 return mProgramUniforms2f;
1864 inline const ProgramUniformValue<Vector3>& GetProgramUniformsForType( const Vector3& ) const
1866 return mProgramUniforms3f;
1868 inline const ProgramUniformValue<Vector4>& GetProgramUniformsForType( const Vector4& ) const
1870 return mProgramUniforms4f;
1872 inline const ProgramUniformValue<Matrix>& GetProgramUniformsForType( const Matrix& ) const
1874 return mProgramUniformsMat4;
1876 inline const ProgramUniformValue<Matrix3>& GetProgramUniformsForType( const Matrix3& ) const
1878 return mProgramUniformsMat3;
1880 inline void SetVertexAttribArray(GLuint index, bool state)
1882 if( index >= MAX_ATTRIBUTE_CACHE_SIZE )
1887 mVertexAttribArrayState[ index ] = state;
1888 mVertexAttribArrayChanged = true;
1891 ScissorParams mScissorParams;
1895 inline int TestGlAbstraction::ProgramUniformValue<int>::GetZero() const
1901 inline float TestGlAbstraction::ProgramUniformValue<float>::GetZero() const
1907 inline Vector2 TestGlAbstraction::ProgramUniformValue<Vector2>::GetZero() const
1909 return Vector2::ZERO;
1913 inline Vector3 TestGlAbstraction::ProgramUniformValue<Vector3>::GetZero() const
1915 return Vector3::ZERO;
1919 inline Vector4 TestGlAbstraction::ProgramUniformValue<Vector4>::GetZero() const
1921 return Vector4::ZERO;
1925 inline Matrix TestGlAbstraction::ProgramUniformValue<Matrix>::GetZero() const
1931 inline Matrix3 TestGlAbstraction::ProgramUniformValue<Matrix3>::GetZero() const
1933 return Matrix3( Matrix() );
1938 bool BlendEnabled(const Dali::TraceCallStack& callStack);
1939 bool BlendDisabled(const Dali::TraceCallStack& callStack);
1944 #endif // __TEST_GL_ES_H__