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.
28 #include <dali/public-api/dali-core.h>
29 #include <dali/integration-api/core.h>
30 #include <dali/integration-api/gl-abstraction.h>
31 #include <dali/integration-api/gl-defines.h>
32 #include "test-trace-call-stack.h"
37 static const unsigned int MAX_ATTRIBUTE_CACHE_SIZE = 64;
38 static const char *mStdAttribs[MAX_ATTRIBUTE_CACHE_SIZE] =
40 "aPosition", // ATTRIB_POSITION
41 "aNormal", // ATTRIB_NORMAL
42 "aTexCoord", // ATTRIB_TEXCOORD
43 "aColor", // ATTRIB_COLOR
44 "aBoneWeights", // ATTRIB_BONE_WEIGHTS
45 "aBoneIndices" // ATTRIB_BONE_INDICES
48 class DALI_IMPORT_API TestGlAbstraction: public Dali::Integration::GlAbstraction
56 void PostRender(unsigned int timeDelta);
60 inline void ActiveTexture( GLenum textureUnit )
62 mActiveTextureUnit = textureUnit - GL_TEXTURE0;
65 inline GLenum GetActiveTextureUnit() const
67 return mActiveTextureUnit + GL_TEXTURE0;
70 inline void AttachShader( GLuint program, GLuint shader )
72 std::stringstream out;
73 out << program << ", " << shader;
74 mShaderTrace.PushCall("AttachShader", out.str());
77 inline void BindAttribLocation( GLuint program, GLuint index, const char* name )
81 inline void BindBuffer( GLenum target, GLuint buffer )
85 inline void BindFramebuffer( GLenum target, GLuint framebuffer )
89 inline void BindRenderbuffer( GLenum target, GLuint renderbuffer )
94 * This method can be used by test cases, to query the texture IDs that have been bound by BindTexture.
95 * @return A vector containing the IDs that were bound.
97 inline const std::vector<GLuint>& GetBoundTextures() const
99 return mBoundTextures;
103 * Query the texture IDs that have been bound with BindTexture, with a specific active texture unit.
104 * @param[in] activeTextureUnit The specific active texture unit.
105 * @return A vector containing the IDs that were bound.
107 inline const std::vector<GLuint>& GetBoundTextures( GLuint activeTextureUnit ) const
109 return mActiveTextures[ activeTextureUnit - GL_TEXTURE0 ].mBoundTextures;
113 * This method can be used by test cases, to clear the record of texture IDs that have been bound by BindTexture.
115 inline void ClearBoundTextures()
117 mBoundTextures.clear();
119 for( unsigned int i=0; i<MIN_TEXTURE_UNIT_LIMIT; ++i )
121 mActiveTextures[ i ].mBoundTextures.clear();
125 inline void BindTexture( GLenum target, GLuint texture )
127 // Record the bound textures for future checks
130 mBoundTextures.push_back( texture );
132 if( mActiveTextureUnit < MIN_TEXTURE_UNIT_LIMIT )
134 mActiveTextures[ mActiveTextureUnit ].mBoundTextures.push_back( texture );
138 std::stringstream out;
139 out << target << ", " << texture;
140 mTextureTrace.PushCall("BindTexture", out.str());
143 inline void BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
145 mLastBlendColor.r = red;
146 mLastBlendColor.g = green;
147 mLastBlendColor.b = blue;
148 mLastBlendColor.a = alpha;
151 inline const Vector4& GetLastBlendColor() const
153 return mLastBlendColor;
156 inline void BlendEquation( GLenum mode )
158 mLastBlendEquationRgb = mode;
159 mLastBlendEquationAlpha = mode;
162 inline void BlendEquationSeparate( GLenum modeRgb, GLenum modeAlpha )
164 mLastBlendEquationRgb = modeRgb;
165 mLastBlendEquationAlpha = modeAlpha;
168 inline GLenum GetLastBlendEquationRgb() const
170 return mLastBlendEquationRgb;
173 inline GLenum GetLastBlendEquationAlpha() const
175 return mLastBlendEquationAlpha;
178 inline void BlendFunc(GLenum sfactor, GLenum dfactor)
180 mLastBlendFuncSrcRgb = sfactor;
181 mLastBlendFuncDstRgb = dfactor;
182 mLastBlendFuncSrcAlpha = sfactor;
183 mLastBlendFuncDstAlpha = dfactor;
186 inline void BlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
188 mLastBlendFuncSrcRgb = srcRGB;
189 mLastBlendFuncDstRgb = dstRGB;
190 mLastBlendFuncSrcAlpha = srcAlpha;
191 mLastBlendFuncDstAlpha = dstAlpha;
194 inline GLenum GetLastBlendFuncSrcRgb() const
196 return mLastBlendFuncSrcRgb;
199 inline GLenum GetLastBlendFuncDstRgb() const
201 return mLastBlendFuncDstRgb;
204 inline GLenum GetLastBlendFuncSrcAlpha() const
206 return mLastBlendFuncSrcAlpha;
209 inline GLenum GetLastBlendFuncDstAlpha() const
211 return mLastBlendFuncDstAlpha;
214 inline void BufferData(GLenum target, GLsizeiptr size, const void* data, GLenum usage)
218 inline void BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void* data)
222 inline GLenum CheckFramebufferStatus(GLenum target)
224 return mCheckFramebufferStatusResult;
227 inline void Clear(GLbitfield mask)
230 mLastClearBitMask = mask;
233 inline void ClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
237 inline void ClearDepthf(GLclampf depth)
241 inline void ClearStencil(GLint s)
245 inline void ColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
249 inline void CompileShader(GLuint shader)
251 std::stringstream out;
253 mShaderTrace.PushCall("CompileShader", out.str());
256 inline void CompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data)
260 inline void CompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data)
264 inline void CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
268 inline void CopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
272 inline GLuint CreateProgram(void)
274 mShaderTrace.PushCall("CreateProgram", "");
276 ++mLastProgramIdUsed;
277 mUniforms[mLastProgramIdUsed] = UniformIDMap();
278 return mLastProgramIdUsed;
281 inline GLuint CreateShader(GLenum type)
283 std::stringstream out;
285 mShaderTrace.PushCall("CreateShader", out.str());
287 return ++mLastShaderIdUsed;
290 inline void CullFace(GLenum mode)
292 std::stringstream out;
294 mCullFaceTrace.PushCall("CullFace", out.str());
297 inline void DeleteBuffers(GLsizei n, const GLuint* buffers)
301 inline void DeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
305 inline void DeleteProgram(GLuint program)
307 std::stringstream out;
309 mShaderTrace.PushCall("DeleteProgram", out.str());
312 inline void DeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
316 inline void DeleteShader(GLuint shader)
318 std::stringstream out;
320 mShaderTrace.PushCall("DeleteShader", out.str());
323 inline void DeleteTextures(GLsizei n, const GLuint* textures)
325 std::stringstream out;
326 out << n << ", " << textures << " = [" ;
328 for(GLsizei i=0; i<n; i++)
330 out << textures[i] << ", " ;
331 mDeletedTextureIds.push_back(textures[i]);
334 mTextureTrace.PushCall("DeleteTextures", out.str());
337 inline bool CheckNoTexturesDeleted()
339 return mDeletedTextureIds.size() == 0;
342 inline bool CheckTextureDeleted( GLuint textureId )
346 for(std::vector<GLuint>::iterator iter=mDeletedTextureIds.begin(); iter != mDeletedTextureIds.end(); ++iter)
348 if(*iter == textureId)
357 inline void ClearDeletedTextures()
359 mDeletedTextureIds.clear();
362 inline void DepthFunc(GLenum func)
366 inline void DepthMask(GLboolean flag)
370 inline void DepthRangef(GLclampf zNear, GLclampf zFar)
374 inline void DetachShader(GLuint program, GLuint shader)
376 std::stringstream out;
377 out << program << ", " << shader;
378 mShaderTrace.PushCall("DetachShader", out.str());
381 inline void Disable(GLenum cap)
383 std::stringstream out;
385 mCullFaceTrace.PushCall("Disable", out.str());
388 inline void DisableVertexAttribArray(GLuint index)
390 SetVertexAttribArray( index, false );
393 inline void DrawArrays(GLenum mode, GLint first, GLsizei count)
395 std::stringstream out;
396 out << mode << ", " << first << ", " << count;
397 mDrawTrace.PushCall("DrawArrays", out.str());
400 inline void DrawElements(GLenum mode, GLsizei count, GLenum type, const void* indices)
402 std::stringstream out;
403 out << mode << ", " << count << ", " << type << ", indices";
404 mDrawTrace.PushCall("DrawElements", out.str());
407 inline void Enable(GLenum cap)
409 std::stringstream out;
411 mCullFaceTrace.PushCall("Enable", out.str());
414 inline void EnableVertexAttribArray(GLuint index)
416 SetVertexAttribArray( index, true);
419 inline void Finish(void)
423 inline void Flush(void)
427 inline void FramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
431 inline void FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
435 inline void FrontFace(GLenum mode)
439 inline void GenBuffers(GLsizei n, GLuint* buffers)
441 // avoids an assert in GpuBuffers
445 inline void GenerateMipmap(GLenum target)
449 inline void GenFramebuffers(GLsizei n, GLuint* framebuffers)
453 inline void GenRenderbuffers(GLsizei n, GLuint* renderbuffers)
458 * This method can be used by test cases, to manipulate the texture IDs generated by GenTextures.
459 * @param[in] ids A vector containing the next IDs to be generated
461 inline void SetNextTextureIds( const std::vector<GLuint>& ids )
463 mNextTextureIds = ids;
466 inline const std::vector<GLuint>& GetNextTextureIds()
468 return mNextTextureIds;
471 inline void GenTextures(GLsizei n, GLuint* textures)
473 for( int i=0; i<n; ++i )
475 if( !mNextTextureIds.empty() )
477 *(textures+i) = mNextTextureIds[0];
478 mNextTextureIds.erase( mNextTextureIds.begin() );
482 *(textures+i) = ++mLastAutoTextureIdUsed;
486 std::stringstream out;
487 for(int i=0; i<n; i++)
495 mTextureTrace.PushCall("GenTextures", out.str());
498 inline void GetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
502 inline void GetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name)
506 inline void GetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
510 inline int GetAttribLocation(GLuint program, const char* name)
512 std::string attribName(name);
514 for( unsigned int i = 0; i < ATTRIB_TYPE_LAST; ++i )
516 if( mStdAttribs[i] == attribName )
522 // 0 is a valid location
526 inline void GetBooleanv(GLenum pname, GLboolean* params)
530 inline void GetBufferParameteriv(GLenum target, GLenum pname, GLint* params)
534 inline GLenum GetError(void)
536 return mGetErrorResult;
539 inline void GetFloatv(GLenum pname, GLfloat* params)
543 inline void GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params)
547 inline void GetIntegerv(GLenum pname, GLint* params)
551 case GL_MAX_TEXTURE_SIZE:
554 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
557 case GL_NUM_PROGRAM_BINARY_FORMATS_OES:
558 *params = mNumBinaryFormats;
560 case GL_PROGRAM_BINARY_FORMATS_OES:
561 *params = mBinaryFormats;
566 inline void GetProgramiv(GLuint program, GLenum pname, GLint* params)
570 *params = mLinkStatus;
572 case GL_PROGRAM_BINARY_LENGTH_OES:
573 *params = mProgramBinaryLength;
578 inline void GetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, char* infolog)
583 inline void GetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params)
587 inline void GetShaderiv(GLuint shader, GLenum pname, GLint* params)
590 case GL_COMPILE_STATUS:
591 *params = mCompileStatus;
596 inline void GetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog)
600 inline void GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
604 inline const GLubyte* GetString(GLenum name)
606 return mGetStringResult;
609 inline void GetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
613 inline void GetTexParameteriv(GLenum target, GLenum pname, GLint* params)
617 inline void GetUniformfv(GLuint program, GLint location, GLfloat* params)
621 inline void GetUniformiv(GLuint program, GLint location, GLint* params)
625 inline GLint GetUniformLocation(GLuint program, const char* name)
627 ProgramUniformMap::iterator it = mUniforms.find(program);
628 if( it == mUniforms.end() )
630 // Not a valid program ID
631 mGetErrorResult = GL_INVALID_OPERATION;
635 UniformIDMap& uniformIDs = it->second;
636 UniformIDMap::iterator it2 = uniformIDs.find( name );
637 if( it2 == uniformIDs.end() )
639 // Uniform not found, so add it...
640 uniformIDs[name] = ++mLastUniformIdUsed;
641 return mLastUniformIdUsed;
647 inline void GetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params)
651 inline void GetVertexAttribiv(GLuint index, GLenum pname, GLint* params)
655 inline void GetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer)
659 inline void Hint(GLenum target, GLenum mode)
663 inline GLboolean IsBuffer(GLuint buffer)
665 return mIsBufferResult;
668 inline GLboolean IsEnabled(GLenum cap)
670 return mIsEnabledResult;
673 inline GLboolean IsFramebuffer(GLuint framebuffer)
675 return mIsFramebufferResult;
678 inline GLboolean IsProgram(GLuint program)
680 return mIsProgramResult;
683 inline GLboolean IsRenderbuffer(GLuint renderbuffer)
685 return mIsRenderbufferResult;
688 inline GLboolean IsShader(GLuint shader)
690 return mIsShaderResult;
693 inline GLboolean IsTexture(GLuint texture)
695 return mIsTextureResult;
698 inline void LineWidth(GLfloat width)
702 inline void LinkProgram(GLuint program)
704 std::stringstream out;
706 mShaderTrace.PushCall("LinkProgram", out.str());
709 inline void PixelStorei(GLenum pname, GLint param)
713 inline void PolygonOffset(GLfloat factor, GLfloat units)
717 inline void ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels)
721 inline void ReleaseShaderCompiler(void)
725 inline void RenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
729 inline void SampleCoverage(GLclampf value, GLboolean invert)
733 inline void Scissor(GLint x, GLint y, GLsizei width, GLsizei height)
735 mScissorParams.x = x;
736 mScissorParams.y = y;
737 mScissorParams.width = width;
738 mScissorParams.height = height;
741 inline void ShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLsizei length)
745 inline void ShaderSource(GLuint shader, GLsizei count, const char** string, const GLint* length)
747 std::string stringBuilder;
748 for(int i = 0; i < count; ++i)
750 stringBuilder += string[i];
752 mShaderSources[shader] = stringBuilder;
753 mLastShaderCompiled = shader;
756 inline void GetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, char* source)
758 const std::string shaderSource = mShaderSources[shader];
759 if( static_cast<int>(shaderSource.length()) < bufsize )
761 strcpy(source, shaderSource.c_str());
762 *length = shaderSource.length();
766 *length = bufsize -1;
767 strncpy(source, shaderSource.c_str(), *length);
768 source[*length] = 0x0;
772 inline std::string GetShaderSource(GLuint shader)
774 return mShaderSources[shader];
777 inline void StencilFunc(GLenum func, GLint ref, GLuint mask)
781 inline void StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
785 inline void StencilMask(GLuint mask)
789 inline void StencilMaskSeparate(GLenum face, GLuint mask)
793 inline void StencilOp(GLenum fail, GLenum zfail, GLenum zpass)
797 inline void StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
801 inline void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels)
803 std::stringstream out;
804 out << width << ", " << height;
805 mTextureTrace.PushCall("TexImage2D", out.str());
808 inline void TexParameterf(GLenum target, GLenum pname, GLfloat param)
810 std::stringstream out;
811 out << target << ", " << pname << ", " << param;
812 mTexParamaterTrace.PushCall("TexParameterf", out.str());
815 inline void TexParameterfv(GLenum target, GLenum pname, const GLfloat* params)
817 std::stringstream out;
818 out << target << ", " << pname << ", " << params[0];
819 mTexParamaterTrace.PushCall("TexParameterfv", out.str());
822 inline void TexParameteri(GLenum target, GLenum pname, GLint param)
824 std::stringstream out;
825 out << target << ", " << pname << ", " << param;
826 mTexParamaterTrace.PushCall("TexParameteri", out.str());
829 inline void TexParameteriv(GLenum target, GLenum pname, const GLint* params)
831 std::stringstream out;
832 out << target << ", " << pname << ", " << params[0];
833 mTexParamaterTrace.PushCall("TexParameteriv", out.str());
836 inline void TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels)
838 std::stringstream out;
839 out << xoffset << ", " << yoffset << ", " << width << ", " << height;
840 mTextureTrace.PushCall("TexSubImage2D", out.str());
843 inline void Uniform1f(GLint location, GLfloat x)
845 if( ! mProgramUniforms1f.SetUniformValue( mCurrentProgram, location, x ) )
847 mGetErrorResult = GL_INVALID_OPERATION;
851 inline void Uniform1fv(GLint location, GLsizei count, const GLfloat* v)
853 for( int i = 0; i < count; ++i )
855 if( ! mProgramUniforms1f.SetUniformValue( mCurrentProgram, location, v[i] ) )
857 mGetErrorResult = GL_INVALID_OPERATION;
863 inline void Uniform1i(GLint location, GLint x)
865 if( ! mProgramUniforms1i.SetUniformValue( mCurrentProgram, location, x ) )
867 mGetErrorResult = GL_INVALID_OPERATION;
871 inline void Uniform1iv(GLint location, GLsizei count, const GLint* v)
873 for( int i = 0; i < count; ++i )
875 if( ! mProgramUniforms1i.SetUniformValue( mCurrentProgram,
879 mGetErrorResult = GL_INVALID_OPERATION;
885 inline void Uniform2f(GLint location, GLfloat x, GLfloat y)
887 if( ! mProgramUniforms2f.SetUniformValue( mCurrentProgram,
891 mGetErrorResult = GL_INVALID_OPERATION;
895 inline void Uniform2fv(GLint location, GLsizei count, const GLfloat* v)
897 for( int i = 0; i < count; ++i )
899 if( ! mProgramUniforms2f.SetUniformValue( mCurrentProgram,
901 Vector2( v[2*i], v[2*i+1] ) ) )
903 mGetErrorResult = GL_INVALID_OPERATION;
909 inline void Uniform2i(GLint location, GLint x, GLint y)
913 inline void Uniform2iv(GLint location, GLsizei count, const GLint* v)
917 inline void Uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z)
919 if( ! mProgramUniforms3f.SetUniformValue( mCurrentProgram,
921 Vector3( x, y, z ) ) )
923 mGetErrorResult = GL_INVALID_OPERATION;
927 inline void Uniform3fv(GLint location, GLsizei count, const GLfloat* v)
929 for( int i = 0; i < count; ++i )
931 if( ! mProgramUniforms3f.SetUniformValue(
934 Vector3( v[3*i], v[3*i+1], v[3*i+2] ) ) )
936 mGetErrorResult = GL_INVALID_OPERATION;
942 inline void Uniform3i(GLint location, GLint x, GLint y, GLint z)
946 inline void Uniform3iv(GLint location, GLsizei count, const GLint* v)
950 inline void Uniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
952 if( ! mProgramUniforms4f.SetUniformValue( mCurrentProgram,
954 Vector4( x, y, z, w ) ) )
956 mGetErrorResult = GL_INVALID_OPERATION;
960 inline void Uniform4fv(GLint location, GLsizei count, const GLfloat* v)
962 for( int i = 0; i < count; ++i )
964 if( ! mProgramUniforms4f.SetUniformValue(
967 Vector4( v[4*i], v[4*i+1], v[4*i+2], v[4*i+3] ) ) )
969 mGetErrorResult = GL_INVALID_OPERATION;
975 inline void Uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w)
979 inline void Uniform4iv(GLint location, GLsizei count, const GLint* v)
983 inline void UniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
987 inline void UniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
989 for( int i = 0; i < count; ++i )
991 if( ! mProgramUniformsMat3.SetUniformValue(
994 Matrix3( value[0], value[1], value[2], value[3], value[4], value[5], value[6], value[7], value[8] ) ) )
996 mGetErrorResult = GL_INVALID_OPERATION;
1002 inline void UniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1004 for( int i = 0; i < count; ++i )
1006 if( ! mProgramUniformsMat4.SetUniformValue(
1011 mGetErrorResult = GL_INVALID_OPERATION;
1017 inline void UseProgram(GLuint program)
1019 mCurrentProgram = program;
1022 inline void ValidateProgram(GLuint program)
1026 inline void VertexAttrib1f(GLuint indx, GLfloat x)
1030 inline void VertexAttrib1fv(GLuint indx, const GLfloat* values)
1034 inline void VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y)
1038 inline void VertexAttrib2fv(GLuint indx, const GLfloat* values)
1042 inline void VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z)
1046 inline void VertexAttrib3fv(GLuint indx, const GLfloat* values)
1050 inline void VertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
1054 inline void VertexAttrib4fv(GLuint indx, const GLfloat* values)
1058 inline void VertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr)
1062 inline void Viewport(GLint x, GLint y, GLsizei width, GLsizei height)
1068 inline void ReadBuffer(GLenum mode)
1072 inline void DrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices)
1076 inline void TexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
1080 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)
1084 inline void CopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
1088 inline void CompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
1092 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)
1096 inline void GenQueries(GLsizei n, GLuint* ids)
1100 inline void DeleteQueries(GLsizei n, const GLuint* ids)
1104 inline GLboolean IsQuery(GLuint id)
1109 inline void BeginQuery(GLenum target, GLuint id)
1113 inline void EndQuery(GLenum target)
1117 inline void GetQueryiv(GLenum target, GLenum pname, GLint* params)
1121 inline void GetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params)
1125 inline GLboolean UnmapBuffer(GLenum target)
1130 inline void GetBufferPointerv(GLenum target, GLenum pname, GLvoid** params)
1134 inline void DrawBuffers(GLsizei n, const GLenum* bufs)
1138 inline void UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1142 inline void UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1146 inline void UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1150 inline void UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1154 inline void UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1158 inline void UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1162 inline void BlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
1166 inline void RenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
1170 inline void FramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
1174 inline GLvoid* MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
1179 inline void FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
1183 inline void BindVertexArray(GLuint array)
1187 inline void DeleteVertexArrays(GLsizei n, const GLuint* arrays)
1191 inline void GenVertexArrays(GLsizei n, GLuint* arrays)
1195 inline GLboolean IsVertexArray(GLuint array)
1200 inline void GetIntegeri_v(GLenum target, GLuint index, GLint* data)
1204 inline void BeginTransformFeedback(GLenum primitiveMode)
1208 inline void EndTransformFeedback(void)
1212 inline void BindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
1216 inline void BindBufferBase(GLenum target, GLuint index, GLuint buffer)
1220 inline void TransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode)
1224 inline void GetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name)
1228 inline void VertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer)
1232 inline void GetVertexAttribIiv(GLuint index, GLenum pname, GLint* params)
1236 inline void GetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params)
1240 inline void VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w)
1244 inline void VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
1248 inline void VertexAttribI4iv(GLuint index, const GLint* v)
1252 inline void VertexAttribI4uiv(GLuint index, const GLuint* v)
1256 inline void GetUniformuiv(GLuint program, GLint location, GLuint* params)
1260 inline GLint GetFragDataLocation(GLuint program, const GLchar *name)
1265 inline void Uniform1ui(GLint location, GLuint v0)
1269 inline void Uniform2ui(GLint location, GLuint v0, GLuint v1)
1273 inline void Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2)
1277 inline void Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
1281 inline void Uniform1uiv(GLint location, GLsizei count, const GLuint* value)
1285 inline void Uniform2uiv(GLint location, GLsizei count, const GLuint* value)
1289 inline void Uniform3uiv(GLint location, GLsizei count, const GLuint* value)
1293 inline void Uniform4uiv(GLint location, GLsizei count, const GLuint* value)
1297 inline void ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint* value)
1301 inline void ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint* value)
1305 inline void ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat* value)
1309 inline void ClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
1313 inline const GLubyte* GetStringi(GLenum name, GLuint index)
1318 inline void CopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
1322 inline void GetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices)
1326 inline void GetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params)
1330 inline GLuint GetUniformBlockIndex(GLuint program, const GLchar* uniformBlockName)
1332 return GL_INVALID_INDEX;
1335 inline void GetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params)
1339 inline void GetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName)
1343 inline void UniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
1347 inline void DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount)
1351 inline void DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instanceCount)
1355 inline GLsync FenceSync(GLenum condition, GLbitfield flags)
1360 inline GLboolean IsSync(GLsync sync)
1365 inline void DeleteSync(GLsync sync)
1369 inline GLenum ClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
1374 inline void WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
1378 inline void GetInteger64v(GLenum pname, GLint64* params)
1382 inline void GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values)
1386 inline void GetInteger64i_v(GLenum target, GLuint index, GLint64* data)
1390 inline void GetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params)
1394 inline void GenSamplers(GLsizei count, GLuint* samplers)
1398 inline void DeleteSamplers(GLsizei count, const GLuint* samplers)
1402 inline GLboolean IsSampler(GLuint sampler)
1407 inline void BindSampler(GLuint unit, GLuint sampler)
1411 inline void SamplerParameteri(GLuint sampler, GLenum pname, GLint param)
1415 inline void SamplerParameteriv(GLuint sampler, GLenum pname, const GLint* param)
1419 inline void SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
1423 inline void SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat* param)
1427 inline void GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params)
1431 inline void GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params)
1435 inline void VertexAttribDivisor(GLuint index, GLuint divisor)
1439 inline void BindTransformFeedback(GLenum target, GLuint id)
1443 inline void DeleteTransformFeedbacks(GLsizei n, const GLuint* ids)
1447 inline void GenTransformFeedbacks(GLsizei n, GLuint* ids)
1451 inline GLboolean IsTransformFeedback(GLuint id)
1456 inline void PauseTransformFeedback(void)
1460 inline void ResumeTransformFeedback(void)
1464 inline void GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary)
1466 mGetProgramBinaryCalled = true;
1469 inline void ProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length)
1473 inline void ProgramParameteri(GLuint program, GLenum pname, GLint value)
1477 inline void InvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments)
1481 inline void InvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height)
1485 inline void TexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
1489 inline void TexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
1493 inline void GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params)
1497 public: // TEST FUNCTIONS
1498 inline void SetCompileStatus( GLuint value ) { mCompileStatus = value; }
1499 inline void SetLinkStatus( GLuint value ) { mLinkStatus = value; }
1500 inline void SetGetAttribLocationResult( int result) { mGetAttribLocationResult = result; }
1501 inline void SetGetErrorResult( GLenum result) { mGetErrorResult = result; }
1502 inline void SetGetStringResult( GLubyte* result) { mGetStringResult = result; }
1503 inline void SetIsBufferResult( GLboolean result) { mIsBufferResult = result; }
1504 inline void SetIsEnabledResult( GLboolean result) { mIsEnabledResult = result; }
1505 inline void SetIsFramebufferResult( GLboolean result) { mIsFramebufferResult = result; }
1506 inline void SetIsProgramResult( GLboolean result) { mIsProgramResult = result; }
1507 inline void SetIsRenderbufferResult( GLboolean result) { mIsRenderbufferResult = result; }
1508 inline void SetIsShaderResult( GLboolean result) { mIsShaderResult = result; }
1509 inline void SetIsTextureResult( GLboolean result) { mIsTextureResult = result; }
1510 inline void SetCheckFramebufferStatusResult( GLenum result) { mCheckFramebufferStatusResult = result; }
1511 inline void SetNumBinaryFormats( GLint numFormats ) { mNumBinaryFormats = numFormats; }
1512 inline void SetBinaryFormats( GLint binaryFormats ) { mBinaryFormats = binaryFormats; }
1513 inline void SetProgramBinaryLength( GLint length ) { mProgramBinaryLength = length; }
1515 inline bool GetVertexAttribArrayState(GLuint index)
1517 if( index >= MAX_ATTRIBUTE_CACHE_SIZE )
1522 return mVertexAttribArrayState[ index ];
1524 inline void ClearVertexAttribArrayChanged() { mVertexAttribArrayChanged = false; }
1525 inline bool GetVertexAttribArrayChanged() { return mVertexAttribArrayChanged; }
1527 //Methods for CullFace verification
1528 inline void EnableCullFaceCallTrace(bool enable) { mCullFaceTrace.Enable(enable); }
1529 inline void ResetCullFaceCallStack() { mCullFaceTrace.Reset(); }
1530 inline TraceCallStack& GetCullFaceTrace() { return mCullFaceTrace; }
1532 //Methods for Shader verification
1533 inline void EnableShaderCallTrace(bool enable) { mShaderTrace.Enable(enable); }
1534 inline void ResetShaderCallStack() { mShaderTrace.Reset(); }
1535 inline TraceCallStack& GetShaderTrace() { return mShaderTrace; }
1537 //Methods for Texture verification
1538 inline void EnableTextureCallTrace(bool enable) { mTextureTrace.Enable(enable); }
1539 inline void ResetTextureCallStack() { mTextureTrace.Reset(); }
1540 inline TraceCallStack& GetTextureTrace() { return mTextureTrace; }
1542 //Methods for Texture verification
1543 inline void EnableTexParameterCallTrace(bool enable) { mTexParamaterTrace.Enable(enable); }
1544 inline void ResetTexParameterCallStack() { mTexParamaterTrace.Reset(); }
1545 inline TraceCallStack& GetTexParameterTrace() { return mTexParamaterTrace; }
1547 //Methods for Draw verification
1548 inline void EnableDrawCallTrace(bool enable) { mDrawTrace.Enable(enable); }
1549 inline void ResetDrawCallStack() { mDrawTrace.Reset(); }
1550 inline TraceCallStack& GetDrawTrace() { return mDrawTrace; }
1552 template <typename T>
1553 inline bool GetUniformValue( const char* name, T& value ) const
1555 for( ProgramUniformMap::const_iterator program_it = mUniforms.begin();
1556 program_it != mUniforms.end();
1559 const UniformIDMap &uniformIDs = program_it->second;
1561 UniformIDMap::const_iterator uniform_it = uniformIDs.find( name );
1562 if( uniform_it != uniformIDs.end() )
1564 // found one matching uniform name, lets check the value...
1565 GLuint programId = program_it->first;
1566 GLint uniformId = uniform_it->second;
1568 const ProgramUniformValue<T> &mProgramUniforms = GetProgramUniformsForType( value );
1569 return mProgramUniforms.GetUniformValue( programId, uniformId, value );
1576 template <typename T>
1577 inline bool CheckUniformValue( const char* name, const T& value ) const
1579 for( ProgramUniformMap::const_iterator program_it = mUniforms.begin();
1580 program_it != mUniforms.end();
1583 const UniformIDMap &uniformIDs = program_it->second;
1585 UniformIDMap::const_iterator uniform_it = uniformIDs.find( name );
1586 if( uniform_it != uniformIDs.end() )
1588 // found one matching uniform name, lets check the value...
1589 GLuint programId = program_it->first;
1590 GLint uniformId = uniform_it->second;
1592 const ProgramUniformValue<T> &mProgramUniforms = GetProgramUniformsForType( value );
1593 if( mProgramUniforms.CheckUniformValue( programId, uniformId, value ) )
1595 // the value matches
1601 fprintf(stderr, "Not found, printing possible values:\n" );
1602 for( ProgramUniformMap::const_iterator program_it = mUniforms.begin();
1603 program_it != mUniforms.end();
1606 const UniformIDMap &uniformIDs = program_it->second;
1608 UniformIDMap::const_iterator uniform_it = uniformIDs.find( name );
1609 if( uniform_it != uniformIDs.end() )
1611 // found one matching uniform name, lets check the value...
1612 GLuint programId = program_it->first;
1613 GLint uniformId = uniform_it->second;
1615 const ProgramUniformValue<T> &mProgramUniforms = GetProgramUniformsForType( value );
1617 if ( mProgramUniforms.GetUniformValue(programId, uniformId, origValue) )
1619 std::stringstream out;
1620 out << uniform_it->first << ": " << origValue;
1621 fprintf(stderr, "%s\n", out.str().c_str() );
1628 template <typename T>
1629 inline bool GetUniformValue( GLuint programId, GLuint uniformId, T& outValue) const
1631 const ProgramUniformValue<T> &mProgramUniforms = GetProgramUniformsForType( outValue );
1632 return mProgramUniforms.GetUniformValue( programId, uniformId, outValue );
1635 inline bool GetUniformIds( const char* name, GLuint& programId, GLuint& uniformId ) const
1637 for( ProgramUniformMap::const_iterator program_it = mUniforms.begin();
1638 program_it != mUniforms.end();
1641 const UniformIDMap &uniformIDs = program_it->second;
1643 UniformIDMap::const_iterator uniform_it = uniformIDs.find( name );
1644 if( uniform_it != uniformIDs.end() )
1646 programId = program_it->first;
1647 uniformId = uniform_it->second;
1654 inline GLuint GetLastShaderCompiled() const
1656 return mLastShaderCompiled;
1659 inline GLuint GetLastProgramCreated() const
1661 return mLastProgramIdUsed;
1664 inline GLbitfield GetLastClearMask() const
1666 return mLastClearBitMask;
1671 ATTRIB_UNKNOWN = -1,
1676 ATTRIB_BONE_WEIGHTS,
1677 ATTRIB_BONE_INDICES,
1681 struct ScissorParams
1688 ScissorParams() : x( 0 ), y( 0 ), width( 0 ), height( 0 ) { }
1691 // Methods to check scissor tests
1692 inline const ScissorParams& GetScissorParams() const { return mScissorParams; }
1694 inline bool GetProgramBinaryCalled() const { return mGetProgramBinaryCalled; }
1696 inline unsigned int GetClearCountCalled() const { return mClearCount; }
1699 GLuint mCurrentProgram;
1700 GLuint mCompileStatus;
1702 GLint mGetAttribLocationResult;
1703 GLenum mGetErrorResult;
1704 GLubyte* mGetStringResult;
1705 GLboolean mIsBufferResult;
1706 GLboolean mIsEnabledResult;
1707 GLboolean mIsFramebufferResult;
1708 GLboolean mIsProgramResult;
1709 GLboolean mIsRenderbufferResult;
1710 GLboolean mIsShaderResult;
1711 GLboolean mIsTextureResult;
1712 GLenum mActiveTextureUnit;
1713 GLenum mCheckFramebufferStatusResult;
1714 GLint mNumBinaryFormats;
1715 GLint mBinaryFormats;
1716 GLint mProgramBinaryLength;
1717 bool mVertexAttribArrayState[MAX_ATTRIBUTE_CACHE_SIZE];
1718 bool mVertexAttribArrayChanged; // whether the vertex attrib array has been changed
1719 bool mGetProgramBinaryCalled;
1720 typedef std::map< GLuint, std::string> ShaderSourceMap;
1721 ShaderSourceMap mShaderSources;
1722 GLuint mLastShaderCompiled;
1723 GLbitfield mLastClearBitMask;
1724 unsigned int mClearCount;
1726 Vector4 mLastBlendColor;
1727 GLenum mLastBlendEquationRgb;
1728 GLenum mLastBlendEquationAlpha;
1729 GLenum mLastBlendFuncSrcRgb;
1730 GLenum mLastBlendFuncDstRgb;
1731 GLenum mLastBlendFuncSrcAlpha;
1732 GLenum mLastBlendFuncDstAlpha;
1734 // Data for manipulating the IDs returned by GenTextures
1735 GLuint mLastAutoTextureIdUsed;
1736 std::vector<GLuint> mNextTextureIds;
1737 std::vector<GLuint> mDeletedTextureIds;
1738 std::vector<GLuint> mBoundTextures;
1740 struct ActiveTextureType
1742 std::vector<GLuint> mBoundTextures;
1745 ActiveTextureType mActiveTextures[ MIN_TEXTURE_UNIT_LIMIT ];
1747 TraceCallStack mCullFaceTrace;
1748 TraceCallStack mShaderTrace;
1749 TraceCallStack mTextureTrace;
1750 TraceCallStack mTexParamaterTrace;
1751 TraceCallStack mDrawTrace;
1753 // Shaders & Uniforms
1754 GLuint mLastShaderIdUsed;
1755 GLuint mLastProgramIdUsed;
1756 GLuint mLastUniformIdUsed;
1757 typedef std::map< std::string, GLint > UniformIDMap;
1758 typedef std::map< GLuint, UniformIDMap > ProgramUniformMap;
1759 ProgramUniformMap mUniforms;
1761 template <typename T>
1762 struct ProgramUniformValue : public std::map< GLuint, std::map< GLint, T > >
1765 typedef std::map< GLint, T > UniformValueMap;
1766 typedef std::map< GLuint, UniformValueMap > Map;
1768 bool SetUniformValue( GLuint program, GLuint uniform, const T& value )
1775 typename Map::iterator it = Map::find( program );
1776 if( it == Map::end() )
1778 // if its the first uniform for this program add it
1779 std::pair< typename Map::iterator, bool > result =
1780 Map::insert( typename Map::value_type( program, UniformValueMap() ) );
1784 UniformValueMap& uniforms = it->second;
1785 uniforms[uniform] = value;
1790 bool CheckUniformValue( GLuint program, GLuint uniform, const T& value ) const
1793 if ( GetUniformValue( program, uniform, uniformValue ) )
1795 return value == uniformValue;
1801 bool GetUniformValue( GLuint program, GLuint uniform, T& value ) const
1808 typename Map::const_iterator it = Map::find( program );
1809 if( it == Map::end() )
1811 // Uniform values always initialised as 0
1816 const UniformValueMap& uniforms = it->second;
1817 typename UniformValueMap::const_iterator it2 = uniforms.find( uniform );
1818 if( it2 == uniforms.end() )
1820 // Uniform values always initialised as 0
1824 value = it2->second;
1831 ProgramUniformValue<int> mProgramUniforms1i;
1832 ProgramUniformValue<float> mProgramUniforms1f;
1833 ProgramUniformValue<Vector2> mProgramUniforms2f;
1834 ProgramUniformValue<Vector3> mProgramUniforms3f;
1835 ProgramUniformValue<Vector4> mProgramUniforms4f;
1836 ProgramUniformValue<Matrix> mProgramUniformsMat4;
1837 ProgramUniformValue<Matrix3> mProgramUniformsMat3;
1839 inline const ProgramUniformValue<int>& GetProgramUniformsForType( const int ) const
1841 return mProgramUniforms1i;
1843 inline const ProgramUniformValue<float>& GetProgramUniformsForType( const float ) const
1845 return mProgramUniforms1f;
1847 inline const ProgramUniformValue<Vector2>& GetProgramUniformsForType( const Vector2& ) const
1849 return mProgramUniforms2f;
1851 inline const ProgramUniformValue<Vector3>& GetProgramUniformsForType( const Vector3& ) const
1853 return mProgramUniforms3f;
1855 inline const ProgramUniformValue<Vector4>& GetProgramUniformsForType( const Vector4& ) const
1857 return mProgramUniforms4f;
1859 inline const ProgramUniformValue<Matrix>& GetProgramUniformsForType( const Matrix& ) const
1861 return mProgramUniformsMat4;
1863 inline const ProgramUniformValue<Matrix3>& GetProgramUniformsForType( const Matrix3& ) const
1865 return mProgramUniformsMat3;
1867 inline void SetVertexAttribArray(GLuint index, bool state)
1869 if( index >= MAX_ATTRIBUTE_CACHE_SIZE )
1874 mVertexAttribArrayState[ index ] = state;
1875 mVertexAttribArrayChanged = true;
1878 ScissorParams mScissorParams;
1882 inline int TestGlAbstraction::ProgramUniformValue<int>::GetZero() const
1888 inline float TestGlAbstraction::ProgramUniformValue<float>::GetZero() const
1894 inline Vector2 TestGlAbstraction::ProgramUniformValue<Vector2>::GetZero() const
1896 return Vector2::ZERO;
1900 inline Vector3 TestGlAbstraction::ProgramUniformValue<Vector3>::GetZero() const
1902 return Vector3::ZERO;
1906 inline Vector4 TestGlAbstraction::ProgramUniformValue<Vector4>::GetZero() const
1908 return Vector4::ZERO;
1912 inline Matrix TestGlAbstraction::ProgramUniformValue<Matrix>::GetZero() const
1918 inline Matrix3 TestGlAbstraction::ProgramUniformValue<Matrix3>::GetZero() const
1920 return Matrix3( Matrix() );
1925 bool BlendEnabled(const Dali::TraceCallStack& callStack);
1926 bool BlendDisabled(const Dali::TraceCallStack& callStack);
1931 #endif // __TEST_GL_ES_H__