MorphOS OpenGL 2.1 status overview

Please note that this overview is still work-in-progress. It is not yet complete and is still subject to change.

R300 refers to the R300 driver, which covers the R300, R400 and R500 families of Radeon chips. Unless noted otherwise, anything marked as R300 applies to all 3.

Feature Overview

     = Fully supported (functionality verified)
     = Partially supported (either not verified or partial functionality missing)
     = Not supported
     = Will not be supported (obsolete and/or extremely rare and complex functionality)
     = Hardware can not support this feature
     = Not applicable (ie, functionality resides entirely within tinygl.library)
Feature TinyGL R200 R300 Note
1D textures        
2D textures        
3D textures        
Accumulation Buffer        
Alpha testing        
Blending        
Buffer clearing       Accumulation buffer support is missing, everything else is supported.
Buffer objects        
Clipping        
Colour index mode        
Colour masking        
Compressed textures        
Culling        
Depth buffer        
Display lists        
Feedback        
Fog        
Immediate mode        
Lighting       Various limitations exist on R200 and R300/R400/R500.
Line drawing        
Logical Operation        
Matrix functions        
Miscellaneous        
Multiple render targets        
Multisample antialiasing        
Occlusion queries        
Pixel transfer manipulation        
Point drawing        
Polygon stippling        
Primitive shading        
Raster 2D        
Scissoring        
Selection        
Shaders       R500 is not yet supported.
State management        
Stencil        
Synchronisation        
Texture comparison        
Texture coord generation        
Texture functions        
Texture state management        
Texture wrapping       Both R200 and R300/R400/R500 have hardware bugs that make some unlikely combinations of texture filtering and texture wrapping misbehave
Two-sided stencil        
Vertex arrays        
Viewport        

Features

     = Fully supported (functionality verified)
     = Function exists in the tinygl.library function table (probably works, but not yet verified)
     = Function is implemented as a macro that calls another function
     = Completely unsupported
     = Will not be supported (obsolete and/or extremely rare and complex functionality)

No feature assigned

OpenGL function Supported Note

1D textures

OpenGL function Supported Note
glCopyTexImage1D    
glCopyTexSubImage1D    
glTexImage1D    
glTexSubImage1D    

2D textures

OpenGL function Supported Note
glCopyTexImage2D    
glCopyTexSubImage2D    
glTexImage2D    
glTexSubImage2D    

3D textures

OpenGL function Supported Note
glCopyTexSubImage3D    
glTexImage3D    
glTexSubImage3D    

Accumulation Buffer

OpenGL function Supported Note
glAccum    

Alpha testing

OpenGL function Supported Note
glAlphaFunc    

Blending

OpenGL function Supported Note
glBlendColor    
glBlendEquation    
glBlendEquationSeparate    
glBlendFunc    
glBlendFuncSeparate    

Buffer clearing

OpenGL function Supported Note
glClear    
glClearAccum    
glClearColor    
glClearDepth    
glClearStencil    

Buffer objects

OpenGL function Supported Note
glBindBuffer    
glBufferData    
glBufferSubData    
glDeleteBuffers    
glGenBuffers    
glGetBufferParameteriv    
glGetBufferPointerv    
glGetBufferSubData    
glIsBuffer    
glMapBuffer    
glUnmapBuffer    

Clipping

OpenGL function Supported Note
glClipPlane    
glGetClipPlane    

Colour index mode

OpenGL function Supported Note
glClearIndex   Colour index mode is obsolete, not in use by any apps that I'm aware of and will not be supported.
glIndexMask   Colour index mode is obsolete, not in use by any apps that I'm aware of and will not be supported.
glIndexPointer   Colour index mode is obsolete, not in use by any apps that I'm aware of and will not be supported.
glIndexd   Colour index mode is obsolete, not in use by any apps that I'm aware of and will not be supported.
glIndexdv   Colour index mode is obsolete, not in use by any apps that I'm aware of and will not be supported.
glIndexf   Colour index mode is obsolete, not in use by any apps that I'm aware of and will not be supported.
glIndexfv   Colour index mode is obsolete, not in use by any apps that I'm aware of and will not be supported.
glIndexi   Colour index mode is obsolete, not in use by any apps that I'm aware of and will not be supported.
glIndexiv   Colour index mode is obsolete, not in use by any apps that I'm aware of and will not be supported.
glIndexs   Colour index mode is obsolete, not in use by any apps that I'm aware of and will not be supported.
glIndexsv   Colour index mode is obsolete, not in use by any apps that I'm aware of and will not be supported.
glIndexub   Colour index mode is obsolete, not in use by any apps that I'm aware of and will not be supported.
glIndexubv   Colour index mode is obsolete, not in use by any apps that I'm aware of and will not be supported.

Colour masking

OpenGL function Supported Note
glColorMask    

Compressed textures

OpenGL function Supported Note
glCompressedTexImage1D    
glCompressedTexImage2D    
glCompressedTexImage3D    
glCompressedTexSubImage1D    
glCompressedTexSubImage2D    
glCompressedTexSubImage3D    
glGetCompressedTexImage    

Culling

OpenGL function Supported Note
glCullFace    

Depth buffer

OpenGL function Supported Note
glDepthFunc    
glDepthMask    

Display lists

OpenGL function Supported Note
glCallList    
glCallLists    
glDeleteLists    
glEndList    
glGenLists    
glIsList    
glListBase    
glNewList    

Feedback

OpenGL function Supported Note
glFeedbackBuffer    
glPassThrough    

Fog

OpenGL function Supported Note
glFogf    
glFogfv    
glFogi    
glFogiv    

Immediate mode

OpenGL function Supported Note
glArrayElement    
glBegin    
glColor3b    
glColor3bv    
glColor3d    
glColor3dv    
glColor3f    
glColor3fv    
glColor3i    
glColor3iv    
glColor3s    
glColor3sv    
glColor3ub    
glColor3ubv    
glColor3ui    
glColor3uiv    
glColor3us    
glColor3usv    
glColor4b    
glColor4bv    
glColor4d    
glColor4dv    
glColor4f    
glColor4fv    
glColor4i    
glColor4iv    
glColor4s    
glColor4sv    
glColor4ub    
glColor4ubv    
glColor4ui    
glColor4uiv    
glColor4us    
glColor4usv    
glEdgeFlag    
glEdgeFlagv    
glEnd    
glEvalCoord1d    
glEvalCoord1dv    
glEvalCoord1f    
glEvalCoord1fv    
glEvalCoord2d    
glEvalCoord2dv    
glEvalCoord2f    
glEvalCoord2fv    
glEvalMesh1    
glEvalMesh2    
glEvalPoint1    
glEvalPoint2    
glFogCoordd    
glFogCoorddv    
glFogCoordf    
glFogCoordfv    
glGetMapdv    
glGetMapfv    
glGetMapiv    
glMap1d    
glMap1f    
glMap2d    
glMap2f    
glMapGrid1d    
glMapGrid1f    
glMapGrid2d    
glMapGrid2f    
glMultiTexCoord1d    
glMultiTexCoord1dv    
glMultiTexCoord1f    
glMultiTexCoord1fv    
glMultiTexCoord1i    
glMultiTexCoord1iv    
glMultiTexCoord1s    
glMultiTexCoord1sv    
glMultiTexCoord2d    
glMultiTexCoord2dv    
glMultiTexCoord2f    
glMultiTexCoord2fv    
glMultiTexCoord2i    
glMultiTexCoord2iv    
glMultiTexCoord2s    
glMultiTexCoord2sv    
glMultiTexCoord3d    
glMultiTexCoord3dv    
glMultiTexCoord3f    
glMultiTexCoord3fv    
glMultiTexCoord3i    
glMultiTexCoord3iv    
glMultiTexCoord3s    
glMultiTexCoord3sv    
glMultiTexCoord4d    
glMultiTexCoord4dv    
glMultiTexCoord4f    
glMultiTexCoord4fv    
glMultiTexCoord4i    
glMultiTexCoord4iv    
glMultiTexCoord4s    
glMultiTexCoord4sv    
glNormal3b    
glNormal3bv    
glNormal3d    
glNormal3dv    
glNormal3f    
glNormal3fv    
glNormal3i    
glNormal3iv    
glNormal3s    
glNormal3sv    
glRectd    
glRectdv    
glRectf    
glRectfv    
glRecti    
glRectiv    
glRects    
glRectsv    
glSecondaryColor3b    
glSecondaryColor3bv    
glSecondaryColor3d    
glSecondaryColor3dv    
glSecondaryColor3f    
glSecondaryColor3fv    
glSecondaryColor3i    
glSecondaryColor3iv    
glSecondaryColor3s    
glSecondaryColor3sv    
glSecondaryColor3ub    
glSecondaryColor3ubv    
glSecondaryColor3ui    
glSecondaryColor3uiv    
glSecondaryColor3us    
glSecondaryColor3usv    
glTexCoord1d    
glTexCoord1dv    
glTexCoord1f    
glTexCoord1fv    
glTexCoord1i    
glTexCoord1iv    
glTexCoord1s    
glTexCoord1sv    
glTexCoord2d    
glTexCoord2dv    
glTexCoord2f    
glTexCoord2fv    
glTexCoord2i    
glTexCoord2iv    
glTexCoord2s    
glTexCoord2sv    
glTexCoord3d    
glTexCoord3dv    
glTexCoord3f    
glTexCoord3fv    
glTexCoord3i    
glTexCoord3iv    
glTexCoord3s    
glTexCoord3sv    
glTexCoord4d    
glTexCoord4dv    
glTexCoord4f    
glTexCoord4fv    
glTexCoord4i    
glTexCoord4iv    
glTexCoord4s    
glTexCoord4sv    
glVertex2d    
glVertex2dv    
glVertex2f    
glVertex2fv    
glVertex2i    
glVertex2iv    
glVertex2s    
glVertex2sv    
glVertex3d    
glVertex3dv    
glVertex3f    
glVertex3fv    
glVertex3i    
glVertex3iv    
glVertex3s    
glVertex3sv    
glVertex4d    
glVertex4dv    
glVertex4f    
glVertex4fv    
glVertex4i    
glVertex4iv    
glVertex4s    
glVertex4sv    
glVertexAttrib1d    
glVertexAttrib1dv    
glVertexAttrib1f    
glVertexAttrib1fv    
glVertexAttrib1s    
glVertexAttrib1sv    
glVertexAttrib2d    
glVertexAttrib2dv    
glVertexAttrib2f    
glVertexAttrib2fv    
glVertexAttrib2s    
glVertexAttrib2sv    
glVertexAttrib3d    
glVertexAttrib3dv    
glVertexAttrib3f    
glVertexAttrib3fv    
glVertexAttrib3s    
glVertexAttrib3sv    
glVertexAttrib4Nbv    
glVertexAttrib4Niv    
glVertexAttrib4Nsv    
glVertexAttrib4Nub    
glVertexAttrib4Nubv    
glVertexAttrib4Nuiv    
glVertexAttrib4Nusv    
glVertexAttrib4bv    
glVertexAttrib4d    
glVertexAttrib4dv    
glVertexAttrib4f    
glVertexAttrib4fv    
glVertexAttrib4iv    
glVertexAttrib4s    
glVertexAttrib4sv    
glVertexAttrib4ubv    
glVertexAttrib4uiv    
glVertexAttrib4usv    

Lighting

OpenGL function Supported Note
glColorMaterial    
glGetLightfv    
glGetLightiv    
glGetMaterialfv    
glGetMaterialiv    
glLightModelf    
glLightModelfv    
glLightModeli    
glLightModeliv    
glLightf    
glLightfv    
glLighti    
glLightiv    
glMaterialf  
glMaterialfv  
glMateriali  
glMaterialiv  

Line drawing

OpenGL function Supported Note
glLineStipple    
glLineWidth    

Logical Operation

OpenGL function Supported Note
glLogicOp    

Matrix functions

OpenGL function Supported Note
glFrustum    
glLoadIdentity    
glLoadMatrixd    
glLoadMatrixf    
glLoadTransposeMatrixd    
glLoadTransposeMatrixf    
glMatrixMode   Colour matrices (GL_COLOR) are not supported.
glMultMatrixd    
glMultMatrixf    
glMultTransposeMatrixd    
glMultTransposeMatrixf    
glOrtho    
glPopMatrix    
glPushMatrix    
glRotated    
glRotatef    
glScaled    
glScalef    
glTranslated    
glTranslatef    

Miscellaneous

OpenGL function Supported Note
glFrontFace    
glGetError   Always returns GL_NO_ERROR
glGetString    
glHint    
glPolygonMode    
glPolygonOffset    
glReadPixels   Only GL_RGBA works on R300/R400/R500 in MorphOS 3.16, fixed in later versions.

Multiple render targets

OpenGL function Supported Note
glDrawBuffer    
glDrawBuffers    
glReadBuffer    

Multisample antialiasing

OpenGL function Supported Note
glSampleCoverage    

Occlusion queries

OpenGL function Supported Note
glBeginQuery    
glDeleteQueries    
glEndQuery    
glGenQueries    
glGetQueryObjectiv    
glGetQueryObjectuiv    
glGetQueryiv    
glIsQuery    

Pixel transfer manipulation

OpenGL function Supported Note
glGetPixelMapfv    
glGetPixelMapuiv    
glGetPixelMapusv    
glPixelMapfv    
glPixelMapuiv    
glPixelMapusv    
glPixelStoref    
glPixelStorei    
glPixelTransferf    
glPixelTransferi    
glPixelZoom    

Point drawing

OpenGL function Supported Note
glPointParameterf    
glPointParameterfv    
glPointParameteri    
glPointParameteriv    
glPointSize    

Polygon stippling

OpenGL function Supported Note
glGetPolygonStipple    
glPolygonStipple    

Primitive shading

OpenGL function Supported Note
glShadeModel    

Raster 2D

OpenGL function Supported Note
glBitmap    
glCopyPixels    
glDrawPixels    
glRasterPos2d    
glRasterPos2dv    
glRasterPos2f    
glRasterPos2fv    
glRasterPos2i    
glRasterPos2iv    
glRasterPos2s    
glRasterPos2sv    
glRasterPos3d    
glRasterPos3dv    
glRasterPos3f    
glRasterPos3fv    
glRasterPos3i    
glRasterPos3iv    
glRasterPos3s    
glRasterPos3sv    
glRasterPos4d    
glRasterPos4dv    
glRasterPos4f    
glRasterPos4fv    
glRasterPos4i    
glRasterPos4iv    
glRasterPos4s    
glRasterPos4sv    
glWindowPos2d    
glWindowPos2dv    
glWindowPos2f    
glWindowPos2fv    
glWindowPos2i    
glWindowPos2iv    
glWindowPos2s    
glWindowPos2sv    
glWindowPos3d    
glWindowPos3dv    
glWindowPos3f    
glWindowPos3fv    
glWindowPos3i    
glWindowPos3iv    
glWindowPos3s    
glWindowPos3sv    

Scissoring

OpenGL function Supported Note
glScissor    

Selection

OpenGL function Supported Note
glInitNames    
glLoadName    
glPopName    
glPushName    
glRenderMode    
glSelectBuffer    

Shaders

OpenGL function Supported Note
glAttachShader    
glBindAttribLocation    
glCompileShader    
glCreateProgram    
glCreateShader    
glDeleteProgram    
glDeleteShader    
glDetachShader    
glGetActiveAttrib    
glGetActiveUniform    
glGetAttachedShaders    
glGetAttribLocation    
glGetProgramInfoLog    
glGetProgramiv    
glGetShaderInfoLog    
glGetShaderSource    
glGetShaderiv    
glGetUniformLocation    
glGetUniformfv    
glGetUniformiv    
glIsProgram    
glIsShader    
glLinkProgram    
glShaderSource    
glUniform1f    
glUniform1fv    
glUniform1i    
glUniform1iv    
glUniform2f    
glUniform2fv    
glUniform2i    
glUniform2iv    
glUniform3f    
glUniform3fv    
glUniform3i    
glUniform3iv    
glUniform4f    
glUniform4fv    
glUniform4i    
glUniform4iv    
glUniformMatrix2fv    
glUniformMatrix2x3fv    
glUniformMatrix2x4fv    
glUniformMatrix3fv    
glUniformMatrix3x2fv    
glUniformMatrix3x4fv    
glUniformMatrix4fv    
glUniformMatrix4x2fv    
glUniformMatrix4x3fv    
glUseProgram    
glValidateProgram    

State management

OpenGL function Supported Note
glDisable    
glEnable    
glGetBooleanv    
glGetDoublev    
glGetFloatv    
glGetIntegerv    
glGetPointerv    
glGetTexEnvfv    
glGetTexEnviv    
glIsEnabled    
glPopAttrib    
glPopClientAttrib    
glPushAttrib    
glPushClientAttrib    
glTexEnvf    
glTexEnvfv    
glTexEnvi    
glTexEnviv    

Stencil

OpenGL function Supported Note
glStencilFunc    
glStencilMask    
glStencilOp    

Synchronisation

OpenGL function Supported Note
glFinish    
glFlush    

Texture comparison

OpenGL function Supported Note

Texture coord generation

OpenGL function Supported Note
glGetTexGendv    
glGetTexGenfv    
glGetTexGeniv    
glTexGend    
glTexGendv    
glTexGenf    
glTexGenfv    
glTexGeni    
glTexGeniv    

Texture functions

OpenGL function Supported Note

Texture state management

OpenGL function Supported Note
glActiveTexture    
glAreTexturesResident    
glBindTexture    
glDeleteTextures    
glGenTextures    
glGetTexImage    
glGetTexLevelParameterfv    
glGetTexLevelParameteriv    
glGetTexParameterfv    
glGetTexParameteriv    
glIsTexture    
glPrioritizeTextures    
glTexParameterf    
glTexParameterfv    
glTexParameteri    
glTexParameteriv    

Texture wrapping

OpenGL function Supported Note

Two-sided stencil

OpenGL function Supported Note
glStencilFuncSeparate    
glStencilMaskSeparate    
glStencilOpSeparate    

Vertex arrays

OpenGL function Supported Note
glClientActiveTexture    
glColorPointer    
glDisableClientState    
glDisableVertexAttribArray    
glDrawArrays    
glDrawElements    
glDrawRangeElements    
glEdgeFlagPointer    
glEnableClientState    
glEnableVertexAttribArray    
glFogCoordPointer    
glGetVertexAttribPointerv    
glGetVertexAttribdv    
glGetVertexAttribfv    
glGetVertexAttribiv    
glInterleavedArrays    
glMultiDrawArrays    
glMultiDrawElements    
glNormalPointer    
glSecondaryColorPointer    
glTexCoordPointer    
glVertexAttribPointer    
glVertexPointer    

Viewport

OpenGL function Supported Note
glDepthRange    
glViewport    

Function Statistics

Function status Count Percent
Fully supported 12 2.2
Function exists 229 41.6
Macro exists 51 9.3
Not supported 246 44.6
Will not be supported 13 2.4