Home | History | Annotate | Download | only in GLESv3_dec
      1 GL_ENTRY(void, glActiveTexture, GLenum texture)
      2 GL_ENTRY(void, glAttachShader, GLuint program, GLuint shader)
      3 GL_ENTRY(void, glBindAttribLocation, GLuint program, GLuint index, const GLchar* name)
      4 GL_ENTRY(void, glBindBuffer, GLenum target, GLuint buffer)
      5 GL_ENTRY(void, glBindFramebuffer, GLenum target, GLuint framebuffer)
      6 GL_ENTRY(void, glBindRenderbuffer, GLenum target, GLuint renderbuffer)
      7 GL_ENTRY(void, glBindTexture, GLenum target, GLuint texture)
      8 GL_ENTRY(void, glBlendColor, GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
      9 GL_ENTRY(void, glBlendEquation,  GLenum mode )
     10 GL_ENTRY(void, glBlendEquationSeparate, GLenum modeRGB, GLenum modeAlpha)
     11 GL_ENTRY(void, glBlendFunc, GLenum sfactor, GLenum dfactor)
     12 GL_ENTRY(void, glBlendFuncSeparate, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
     13 GL_ENTRY(void, glBufferData, GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
     14 GL_ENTRY(void, glBufferSubData, GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
     15 GL_ENTRY(GLenum, glCheckFramebufferStatus, GLenum target)
     16 GL_ENTRY(void, glClear, GLbitfield mask)
     17 GL_ENTRY(void, glClearColor, GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
     18 GL_ENTRY(void, glClearDepthf, GLclampf depth)
     19 GL_ENTRY(void, glClearStencil, GLint s)
     20 GL_ENTRY(void, glColorMask, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
     21 GL_ENTRY(void, glCompileShader, GLuint shader)
     22 GL_ENTRY(void, glCompressedTexImage2D, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
     23 GL_ENTRY(void, glCompressedTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
     24 GL_ENTRY(void, glCopyTexImage2D, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
     25 GL_ENTRY(void, glCopyTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
     26 GL_ENTRY(GLuint, glCreateProgram, void)
     27 GL_ENTRY(GLuint, glCreateShader, GLenum type)
     28 GL_ENTRY(void, glCullFace, GLenum mode)
     29 GL_ENTRY(void, glDeleteBuffers, GLsizei n, const GLuint* buffers)
     30 GL_ENTRY(void, glDeleteFramebuffers, GLsizei n, const GLuint* framebuffers)
     31 GL_ENTRY(void, glDeleteProgram, GLuint program)
     32 GL_ENTRY(void, glDeleteRenderbuffers, GLsizei n, const GLuint* renderbuffers)
     33 GL_ENTRY(void, glDeleteShader, GLuint shader)
     34 GL_ENTRY(void, glDeleteTextures, GLsizei n, const GLuint* textures)
     35 GL_ENTRY(void, glDepthFunc, GLenum func)
     36 GL_ENTRY(void, glDepthMask, GLboolean flag)
     37 GL_ENTRY(void, glDepthRangef, GLclampf zNear, GLclampf zFar)
     38 GL_ENTRY(void, glDetachShader, GLuint program, GLuint shader)
     39 GL_ENTRY(void, glDisable, GLenum cap)
     40 GL_ENTRY(void, glDisableVertexAttribArray, GLuint index)
     41 GL_ENTRY(void, glDrawArrays, GLenum mode, GLint first, GLsizei count)
     42 GL_ENTRY(void, glDrawElements, GLenum mode, GLsizei count, GLenum type, const GLvoid* indices)
     43 GL_ENTRY(void, glEnable, GLenum cap)
     44 GL_ENTRY(void, glEnableVertexAttribArray, GLuint index)
     45 GL_ENTRY(void, glFinish, void)
     46 GL_ENTRY(void, glFlush, void)
     47 GL_ENTRY(void, glFramebufferRenderbuffer, GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
     48 GL_ENTRY(void, glFramebufferTexture2D, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
     49 GL_ENTRY(void, glFrontFace, GLenum mode)
     50 GL_ENTRY(void, glGenBuffers, GLsizei n, GLuint* buffers)
     51 GL_ENTRY(void, glGenerateMipmap, GLenum target)
     52 GL_ENTRY(void, glGenFramebuffers, GLsizei n, GLuint* framebuffers)
     53 GL_ENTRY(void, glGenRenderbuffers, GLsizei n, GLuint* renderbuffers)
     54 GL_ENTRY(void, glGenTextures, GLsizei n, GLuint* textures)
     55 GL_ENTRY(void, glGetActiveAttrib, GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
     56 GL_ENTRY(void, glGetActiveUniform, GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
     57 GL_ENTRY(void, glGetAttachedShaders, GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
     58 GL_ENTRY(int, glGetAttribLocation, GLuint program, const GLchar* name)
     59 GL_ENTRY(void, glGetBooleanv, GLenum pname, GLboolean* params)
     60 GL_ENTRY(void, glGetBufferParameteriv, GLenum target, GLenum pname, GLint* params)
     61 GL_ENTRY(GLenum, glGetError, void)
     62 GL_ENTRY(void, glGetFloatv, GLenum pname, GLfloat* params)
     63 GL_ENTRY(void, glGetFramebufferAttachmentParameteriv, GLenum target, GLenum attachment, GLenum pname, GLint* params)
     64 GL_ENTRY(void, glGetIntegerv, GLenum pname, GLint* params)
     65 GL_ENTRY(void, glGetProgramiv, GLuint program, GLenum pname, GLint* params)
     66 GL_ENTRY(void, glGetProgramInfoLog, GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog)
     67 GL_ENTRY(void, glGetRenderbufferParameteriv, GLenum target, GLenum pname, GLint* params)
     68 GL_ENTRY(void, glGetShaderiv, GLuint shader, GLenum pname, GLint* params)
     69 GL_ENTRY(void, glGetShaderInfoLog, GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog)
     70 GL_ENTRY(void, glGetShaderPrecisionFormat, GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
     71 GL_ENTRY(void, glGetShaderSource, GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
     72 GL_ENTRY(const GLubyte*, glGetString, GLenum name)
     73 GL_ENTRY(void, glGetTexParameterfv, GLenum target, GLenum pname, GLfloat* params)
     74 GL_ENTRY(void, glGetTexParameteriv, GLenum target, GLenum pname, GLint* params)
     75 GL_ENTRY(void, glGetUniformfv, GLuint program, GLint location, GLfloat* params)
     76 GL_ENTRY(void, glGetUniformiv, GLuint program, GLint location, GLint* params)
     77 GL_ENTRY(int, glGetUniformLocation, GLuint program, const GLchar* name)
     78 GL_ENTRY(void, glGetVertexAttribfv, GLuint index, GLenum pname, GLfloat* params)
     79 GL_ENTRY(void, glGetVertexAttribiv, GLuint index, GLenum pname, GLint* params)
     80 GL_ENTRY(void, glGetVertexAttribPointerv, GLuint index, GLenum pname, GLvoid** pointer)
     81 GL_ENTRY(void, glHint, GLenum target, GLenum mode)
     82 GL_ENTRY(GLboolean, glIsBuffer, GLuint buffer)
     83 GL_ENTRY(GLboolean, glIsEnabled, GLenum cap)
     84 GL_ENTRY(GLboolean, glIsFramebuffer, GLuint framebuffer)
     85 GL_ENTRY(GLboolean, glIsProgram, GLuint program)
     86 GL_ENTRY(GLboolean, glIsRenderbuffer, GLuint renderbuffer)
     87 GL_ENTRY(GLboolean, glIsShader, GLuint shader)
     88 GL_ENTRY(GLboolean, glIsTexture, GLuint texture)
     89 GL_ENTRY(void, glLineWidth, GLfloat width)
     90 GL_ENTRY(void, glLinkProgram, GLuint program)
     91 GL_ENTRY(void, glPixelStorei, GLenum pname, GLint param)
     92 GL_ENTRY(void, glPolygonOffset, GLfloat factor, GLfloat units)
     93 GL_ENTRY(void, glReadPixels, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
     94 GL_ENTRY(void, glReleaseShaderCompiler, void)
     95 GL_ENTRY(void, glRenderbufferStorage, GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
     96 GL_ENTRY(void, glSampleCoverage, GLclampf value, GLboolean invert)
     97 GL_ENTRY(void, glScissor, GLint x, GLint y, GLsizei width, GLsizei height)
     98 GL_ENTRY(void, glShaderBinary, GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length)
     99 GL_ENTRY(void, glShaderSource, GLuint shader, GLsizei count, const GLchar*const* string, const GLint* length)
    100 GL_ENTRY(void, glStencilFunc, GLenum func, GLint ref, GLuint mask)
    101 GL_ENTRY(void, glStencilFuncSeparate, GLenum face, GLenum func, GLint ref, GLuint mask)
    102 GL_ENTRY(void, glStencilMask, GLuint mask)
    103 GL_ENTRY(void, glStencilMaskSeparate, GLenum face, GLuint mask)
    104 GL_ENTRY(void, glStencilOp, GLenum fail, GLenum zfail, GLenum zpass)
    105 GL_ENTRY(void, glStencilOpSeparate, GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
    106 GL_ENTRY(void, glTexImage2D, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
    107 GL_ENTRY(void, glTexParameterf, GLenum target, GLenum pname, GLfloat param)
    108 GL_ENTRY(void, glTexParameterfv, GLenum target, GLenum pname, const GLfloat* params)
    109 GL_ENTRY(void, glTexParameteri, GLenum target, GLenum pname, GLint param)
    110 GL_ENTRY(void, glTexParameteriv, GLenum target, GLenum pname, const GLint* params)
    111 GL_ENTRY(void, glTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
    112 GL_ENTRY(void, glUniform1f, GLint location, GLfloat x)
    113 GL_ENTRY(void, glUniform1fv, GLint location, GLsizei count, const GLfloat* v)
    114 GL_ENTRY(void, glUniform1i, GLint location, GLint x)
    115 GL_ENTRY(void, glUniform1iv, GLint location, GLsizei count, const GLint* v)
    116 GL_ENTRY(void, glUniform2f, GLint location, GLfloat x, GLfloat y)
    117 GL_ENTRY(void, glUniform2fv, GLint location, GLsizei count, const GLfloat* v)
    118 GL_ENTRY(void, glUniform2i, GLint location, GLint x, GLint y)
    119 GL_ENTRY(void, glUniform2iv, GLint location, GLsizei count, const GLint* v)
    120 GL_ENTRY(void, glUniform3f, GLint location, GLfloat x, GLfloat y, GLfloat z)
    121 GL_ENTRY(void, glUniform3fv, GLint location, GLsizei count, const GLfloat* v)
    122 GL_ENTRY(void, glUniform3i, GLint location, GLint x, GLint y, GLint z)
    123 GL_ENTRY(void, glUniform3iv, GLint location, GLsizei count, const GLint* v)
    124 GL_ENTRY(void, glUniform4f, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
    125 GL_ENTRY(void, glUniform4fv, GLint location, GLsizei count, const GLfloat* v)
    126 GL_ENTRY(void, glUniform4i, GLint location, GLint x, GLint y, GLint z, GLint w)
    127 GL_ENTRY(void, glUniform4iv, GLint location, GLsizei count, const GLint* v)
    128 GL_ENTRY(void, glUniformMatrix2fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
    129 GL_ENTRY(void, glUniformMatrix3fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
    130 GL_ENTRY(void, glUniformMatrix4fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
    131 GL_ENTRY(void, glUseProgram, GLuint program)
    132 GL_ENTRY(void, glValidateProgram, GLuint program)
    133 GL_ENTRY(void, glVertexAttrib1f, GLuint indx, GLfloat x)
    134 GL_ENTRY(void, glVertexAttrib1fv, GLuint indx, const GLfloat* values)
    135 GL_ENTRY(void, glVertexAttrib2f, GLuint indx, GLfloat x, GLfloat y)
    136 GL_ENTRY(void, glVertexAttrib2fv, GLuint indx, const GLfloat* values)
    137 GL_ENTRY(void, glVertexAttrib3f, GLuint indx, GLfloat x, GLfloat y, GLfloat z)
    138 GL_ENTRY(void, glVertexAttrib3fv, GLuint indx, const GLfloat* values)
    139 GL_ENTRY(void, glVertexAttrib4f, GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
    140 GL_ENTRY(void, glVertexAttrib4fv, GLuint indx, const GLfloat* values)
    141 GL_ENTRY(void, glVertexAttribPointer, GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr)
    142 GL_ENTRY(void, glViewport, GLint x, GLint y, GLsizei width, GLsizei height)
    143 GL_ENTRY(void, glEGLImageTargetTexture2DOES, GLenum target, GLeglImageOES image)
    144 GL_ENTRY(void, glEGLImageTargetRenderbufferStorageOES, GLenum target, GLeglImageOES image)
    145 GL_ENTRY(void, glGetProgramBinaryOES, GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary)
    146 GL_ENTRY(void, glProgramBinaryOES, GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length)
    147 GL_ENTRY(void*, glMapBufferOES, GLenum target, GLenum access)
    148 GL_ENTRY(GLboolean, glUnmapBufferOES, GLenum target)
    149 #GL_ENTRY(void, glGetBufferPointervOES, GLenum target, GLenum pname, GLvoid** params)
    150 GL_ENTRY(void, glTexImage3DOES, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
    151 GL_ENTRY(void, glTexSubImage3DOES, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels)
    152 GL_ENTRY(void, glCopyTexSubImage3DOES, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
    153 GL_ENTRY(void, glCompressedTexImage3DOES, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
    154 GL_ENTRY(void, glCompressedTexSubImage3DOES, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data)
    155 GL_ENTRY(void, glFramebufferTexture3DOES, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
    156 GL_ENTRY(void, glBindVertexArrayOES, GLuint array)
    157 GL_ENTRY(void, glDeleteVertexArraysOES, GLsizei n, const GLuint *arrays)
    158 GL_ENTRY(void, glGenVertexArraysOES, GLsizei n, GLuint *arrays)
    159 GL_ENTRY(GLboolean, glIsVertexArrayOES, GLuint array)
    160 GL_ENTRY(void, glDiscardFramebufferEXT, GLenum target, GLsizei numAttachments, const GLenum *attachments)
    161 GL_ENTRY(void, glMultiDrawArraysEXT, GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount)
    162 GL_ENTRY(void, glMultiDrawElementsEXT, GLenum mode, const GLsizei *count, GLenum type, const GLvoid*const* indices, GLsizei primcount)
    163 
    164 #not supported
    165 GL_ENTRY(void, glGetPerfMonitorGroupsAMD, GLint *numGroups, GLsizei groupsSize, GLuint *groups)
    166 GL_ENTRY(void, glGetPerfMonitorCountersAMD, GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters)
    167 GL_ENTRY(void, glGetPerfMonitorGroupStringAMD, GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString)
    168 GL_ENTRY(void, glGetPerfMonitorCounterStringAMD, GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString)
    169 GL_ENTRY(void, glGetPerfMonitorCounterInfoAMD, GLuint group, GLuint counter, GLenum pname, GLvoid *data)
    170 GL_ENTRY(void, glGenPerfMonitorsAMD, GLsizei n, GLuint *monitors)
    171 GL_ENTRY(void, glDeletePerfMonitorsAMD, GLsizei n, GLuint *monitors)
    172 GL_ENTRY(void, glSelectPerfMonitorCountersAMD, GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList)
    173 GL_ENTRY(void, glBeginPerfMonitorAMD, GLuint monitor)
    174 GL_ENTRY(void, glEndPerfMonitorAMD, GLuint monitor)
    175 GL_ENTRY(void, glGetPerfMonitorCounterDataAMD, GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten)
    176 
    177 GL_ENTRY(void, glRenderbufferStorageMultisampleIMG, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
    178 GL_ENTRY(void, glFramebufferTexture2DMultisampleIMG, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
    179 GL_ENTRY(void, glDeleteFencesNV, GLsizei n, const GLuint *fences)
    180 GL_ENTRY(void, glGenFencesNV, GLsizei n, GLuint *fences)
    181 GL_ENTRY(GLboolean, glIsFenceNV, GLuint fence)
    182 GL_ENTRY(GLboolean, glTestFenceNV, GLuint fence)
    183 GL_ENTRY(void, glGetFenceivNV, GLuint fence, GLenum pname, GLint *params)
    184 GL_ENTRY(void, glFinishFenceNV, GLuint fence)
    185 GL_ENTRY(void, glSetFenceNV, GLuint fence, GLenum condition)
    186 GL_ENTRY(void, glCoverageMaskNV, GLboolean mask)
    187 GL_ENTRY(void, glCoverageOperationNV, GLenum operation)
    188 GL_ENTRY(void, glGetDriverControlsQCOM, GLint *num, GLsizei size, GLuint *driverControls)
    189 GL_ENTRY(void, glGetDriverControlStringQCOM, GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString)
    190 GL_ENTRY(void, glEnableDriverControlQCOM, GLuint driverControl)
    191 GL_ENTRY(void, glDisableDriverControlQCOM, GLuint driverControl)
    192 GL_ENTRY(void, glExtGetTexturesQCOM, GLuint *textures, GLint maxTextures, GLint *numTextures)
    193 GL_ENTRY(void, glExtGetBuffersQCOM, GLuint *buffers, GLint maxBuffers, GLint *numBuffers)
    194 GL_ENTRY(void, glExtGetRenderbuffersQCOM, GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers)
    195 GL_ENTRY(void, glExtGetFramebuffersQCOM, GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers)
    196 GL_ENTRY(void, glExtGetTexLevelParameterivQCOM, GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params)
    197 GL_ENTRY(void, glExtTexObjectStateOverrideiQCOM, GLenum target, GLenum pname, GLint param)
    198 GL_ENTRY(void, glExtGetTexSubImageQCOM, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels)
    199 GL_ENTRY(void, glExtGetBufferPointervQCOM, GLenum target, GLvoid** params)
    200 GL_ENTRY(void, glExtGetShadersQCOM, GLuint *shaders, GLint maxShaders, GLint *numShaders)
    201 GL_ENTRY(void, glExtGetProgramsQCOM, GLuint *programs, GLint maxPrograms, GLint *numPrograms)
    202 GL_ENTRY(GLboolean, glExtIsProgramBinaryQCOM, GLuint program)
    203 GL_ENTRY(void, glExtGetProgramBinarySourceQCOM, GLuint program, GLenum shadertype, GLchar *source, GLint *length)
    204 GL_ENTRY(void, glStartTilingQCOM, GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask)
    205 GL_ENTRY(void, glEndTilingQCOM, GLbitfield preserveMask)
    206 
    207 # add-ons for GLES 2
    208 GL_ENTRY(void, glVertexAttribPointerData, GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride,  void * data, GLuint datalen)
    209 GL_ENTRY(void, glVertexAttribPointerOffset, GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride,  GLuint offset)
    210 GL_ENTRY(void, glDrawElementsOffset, GLenum mode, GLsizei count, GLenum type, GLuint offset)
    211 GL_ENTRY(void, glDrawElementsData, GLenum mode, GLsizei count, GLenum type, void *data, GLuint datalen)
    212 GL_ENTRY(void, glGetCompressedTextureFormats, int count, GLint *formats)
    213 GL_ENTRY(void, glShaderString, GLuint shader, const GLchar* string, GLsizei len)
    214 GL_ENTRY(int, glFinishRoundTrip, void)
    215 
    216 # GLES 3.0 ApiGen .in
    217 
    218 # Changes to existing API:
    219 
    220 ## New formats: Need to update all validation code to handle GLES 3.x-specific formats.
    221 ## Primitive restart (close to already implemented in guest encoder, but can be tricky to validate in the middle of all the other draw validation going on)
    222 ## Texture compression with ETC2 (already implemented)
    223 
    224 # New API calls - listed in approximate decreasing order of complexity
    225 
    226 # Vertex Array Objects
    227 ## Before anything else, move GL calls out of sendVertexAttributes() in encoder,
    228 ## or we will get this wrong, as we currently delay glEnableVertexAttribArray/ glVertexAttribPointer
    229 ## until right before glDrawElements/Arrays.
    230 ## This means moving those attribpointer calls out,
    231 ## AND preserving the index range validation behavior that happens
    232 ## just before glDrawElements/Arrays.
    233 GL_ENTRY(void, glGenVertexArrays, GLsizei n, GLuint* arrays)
    234 GL_ENTRY(void, glBindVertexArray, GLuint array)
    235 GL_ENTRY(void, glDeleteVertexArrays, GLsizei n, const GLuint *arrays)
    236 GL_ENTRY(GLboolean, glIsVertexArray, GLuint array)
    237 
    238 # New buffer operationarrays Mapping needs different encoding interface: copy from host on map, and copy to host (and host GPU pointer) on unmap or flush.
    239 ## Proposed:
    240 GL_ENTRY(void*, glMapBufferRange, GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
    241 GL_ENTRY(GLboolean, glUnmapBuffer, GLenum target)
    242 GL_ENTRY(void, glFlushMappedBufferRange, GLenum target, GLintptr offset, GLsizeiptr length)
    243 GL_ENTRY(void, glMapBufferRangeAEMU, GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* mapped)
    244 GL_ENTRY(void, glUnmapBufferAEMU, GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer, GLboolean* out_res)
    245 GL_ENTRY(void, glFlushMappedBufferRangeAEMU, GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access, void* guest_buffer)
    246 ## It seems we can use glUnmapBuffer and glFlushMappedBufferRange as synchronization points
    247 ## to update the host with the new buffer contents:
    248 ## glMapBufferRange / glUnmapBuffer:
    249 ## Guest:                    | Encoder:                           | Host:
    250 ## void* x = glMapBuffer...  |                                    |          
    251 ##                           | glMapBufferRangeAEMU_enc...        |                                             
    252 ##                           |                                    | void* hostptr = glMapBufferRange...
    253 ##                           |                                    | memcpy(mapped, hostptr, sz)
    254 ##                           | stream->readback(mapped, sz)       |                            
    255 ##                           | glMapBufferRangeAEMU_enc exit      |                            
    256 ## x holds host GPU contents |                                    |          
    257 ## <operations on x>         |                                    |           
    258 ## glUnmapBuffer...          |                                    |           
    259 ##                           | glUnmapBufferAEMU_enc...           |           
    260 ##                           | stream->writeFully(x, sz)          |           
    261 ##                           |                                    | memcpy(hostptr, x, sz)
    262 ##                           |                                    | glUnmapBuffer
    263 ## glMapBufferRange / glFlushMappedBufferRange:
    264 ## Guest:                    | Encoder:                           | Host:
    265 ## void* x = glMapBuffer...  |                                    |          
    266 ##                           | glMapBufferRangeAEMU_enc...        |                                             
    267 ##                           |                                    | void* hostptr = glMapBufferRange...
    268 ##                           |                                    | memcpy(mapped, hostptr, sz)
    269 ##                           | stream->readback(mapped, sz)       |                            
    270 ##                           | glMapBufferRangeAEMU_enc exit      |                            
    271 ## x holds host GPU contents |                                    |          
    272 ## <operations on x>         |                                    |           
    273 ## glFlushMappedBufferRange..|                                    |           
    274 ##                           | glFlushMappedBufferRangeAEMU...    |           
    275 ##                           | stream->writeFully(flushedrange... |           
    276 ##                           |                                    | memcpy(hostptr + offset, flushedrange, length)
    277 ##                           |                                    | glFlushMappedBufferRange
    278 ## Make sure to store the binded range when mapped, I bet there is some dEQP test that checks this sort of thing :)
    279 
    280 ## PBOs need to be delivered differently to the host.
    281 GL_ENTRY(void, glReadPixelsOffsetAEMU, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLuint offset)
    282 GL_ENTRY(void, glCompressedTexImage2DOffsetAEMU, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, GLuint offset)
    283 GL_ENTRY(void, glCompressedTexSubImage2DOffsetAEMU, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLuint offset)
    284 GL_ENTRY(void, glTexImage2DOffsetAEMU, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLuint offset)
    285 GL_ENTRY(void, glTexSubImage2DOffsetAEMU, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLuint offset)
    286 
    287 GL_ENTRY(void, glBindBufferRange, GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
    288 GL_ENTRY(void, glBindBufferBase, GLenum target, GLuint index, GLuint buffer)
    289 ## No need to consider mapped buffers here as that is a GL_INVALID_OPERATION :)
    290 GL_ENTRY(void, glCopyBufferSubData, GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size);
    291 
    292 ## These buffer clears don't involve anything that can be mapped, so we are OK.
    293 GL_ENTRY(void, glClearBufferiv, GLenum buffer, GLint drawBuffer, const GLint * value)
    294 GL_ENTRY(void, glClearBufferuiv, GLenum buffer, GLint drawBuffer, const GLuint * value)
    295 GL_ENTRY(void, glClearBufferfv, GLenum buffer, GLint drawBuffer, const GLfloat * value)
    296 GL_ENTRY(void, glClearBufferfi, GLenum buffer, GLint drawBuffer, GLfloat depth, GLint stencil)
    297 
    298 ## Reads (not writes) mapped state only, so shouldn't be sent to host.
    299 GL_ENTRY(void, glGetBufferParameteri64v, GLenum target, GLenum value, GLint64 * data)
    300 
    301 # Get current mapped buffer pointer. Shouldn't be sent to host.
    302 GL_ENTRY(void, glGetBufferPointerv, GLenum target, GLenum pname, GLvoid** params)
    303 
    304 # UBOs
    305 ## Share group processing needed for all of these, as the program is an argument.
    306 ## Validation is bound (heh) to be tricky
    307 GL_ENTRY(void, glUniformBlockBinding, GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
    308 
    309 GL_ENTRY(GLuint, glGetUniformBlockIndex, GLuint program, const GLchar *uniformBlockName)
    310 
    311 # Assume uniformNames packed into 1 buffer on the guest.
    312 GL_ENTRY(void, glGetUniformIndices, GLuint program, GLsizei uniformCount, const GLchar*const* uniformNames, GLuint* uniformIndices)
    313 GL_ENTRY(void, glGetUniformIndicesAEMU, GLuint program, GLsizei uniformCount, const GLchar *packedUniformNames, GLsizei packedLen, GLuint *uniformIndices)
    314 
    315 GL_ENTRY(void, glGetActiveUniformBlockiv, GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)
    316 GL_ENTRY(void, glGetActiveUniformBlockName, GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)
    317 
    318 # More uniform setters
    319 GL_ENTRY(void, glUniform1ui, GLint location, GLuint v0)
    320 GL_ENTRY(void, glUniform2ui, GLint location, GLuint v0, GLuint v1)
    321 GL_ENTRY(void, glUniform3ui, GLint location, GLuint v0, GLuint v1, GLuint v2)
    322 GL_ENTRY(void, glUniform4ui, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
    323 GL_ENTRY(void, glUniform1uiv, GLint location, GLsizei count, const GLuint *value)
    324 GL_ENTRY(void, glUniform2uiv, GLint location, GLsizei count, const GLuint *value)
    325 GL_ENTRY(void, glUniform3uiv, GLint location, GLsizei count, const GLuint *value)
    326 GL_ENTRY(void, glUniform4uiv, GLint location, GLsizei count, const GLuint *value)
    327 GL_ENTRY(void, glUniformMatrix2x3fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
    328 GL_ENTRY(void, glUniformMatrix3x2fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
    329 GL_ENTRY(void, glUniformMatrix2x4fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
    330 GL_ENTRY(void, glUniformMatrix4x2fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
    331 GL_ENTRY(void, glUniformMatrix3x4fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
    332 GL_ENTRY(void, glUniformMatrix4x3fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
    333 
    334 # Need share group processing for these gets
    335 GL_ENTRY(void, glGetUniformuiv, GLuint program, GLint location, GLuint *params)
    336 GL_ENTRY(void, glGetActiveUniformsiv, GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)
    337 
    338 # More vertex attribute setters / queries
    339 GL_ENTRY(void, glVertexAttribI4i, GLuint index, GLint v0, GLint v1, GLint v2, GLint v3)
    340 GL_ENTRY(void, glVertexAttribI4ui, GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
    341 GL_ENTRY(void, glVertexAttribI4iv, GLuint index, const GLint *v)
    342 GL_ENTRY(void, glVertexAttribI4uiv, GLuint index, const GLuint *v)
    343 GL_ENTRY(void, glVertexAttribIPointer, GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer)
    344 GL_ENTRY(void, glVertexAttribIPointerOffsetAEMU, GLuint index, GLint size, GLenum type, GLsizei stride, GLuint offset)
    345 GL_ENTRY(void, glVertexAttribIPointerDataAEMU, GLuint index, GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
    346 GL_ENTRY(void, glGetVertexAttribIiv, GLuint index, GLenum pname, GLint *params)
    347 GL_ENTRY(void, glGetVertexAttribIuiv, GLuint index, GLenum pname, GLuint *params)
    348 
    349 # Instanced draws
    350 GL_ENTRY(void, glVertexAttribDivisor, GLuint index, GLuint divisor)
    351 GL_ENTRY(void, glDrawArraysInstanced, GLenum mode, GLint first, GLsizei count, GLsizei primcount)
    352 
    353 GL_ENTRY(void, glDrawElementsInstanced, GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount)
    354 GL_ENTRY(void, glDrawElementsInstancedDataAEMU, GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount, GLsizei datalen)
    355 GL_ENTRY(void, glDrawElementsInstancedOffsetAEMU, GLenum mode, GLsizei count, GLenum type, GLuint offset, GLsizei primcount)
    356 
    357 
    358 # Draw with known index range
    359 GL_ENTRY(void, glDrawRangeElements, GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)
    360 GL_ENTRY(void, glDrawRangeElementsDataAEMU, GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices, GLsizei datalen)
    361 GL_ENTRY(void, glDrawRangeElementsOffsetAEMU, GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLuint offset)
    362 
    363 # Sync - mostly implemented on host, just need encoder part
    364 GL_ENTRY(GLsync, glFenceSync, GLenum condition, GLbitfield flags)
    365 GL_ENTRY(GLenum, glClientWaitSync, GLsync wait_on, GLbitfield flags, GLuint64 timeout)
    366 GL_ENTRY(void, glWaitSync, GLsync wait_on, GLbitfield flags, GLuint64 timeout)
    367 GL_ENTRY(void, glDeleteSync, GLsync to_delete)
    368 GL_ENTRY(GLboolean, glIsSync, GLsync sync)
    369 GL_ENTRY(void, glGetSynciv, GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)
    370 
    371 GL_ENTRY(uint64_t, glFenceSyncAEMU, GLenum condition, GLbitfield flags)
    372 GL_ENTRY(GLenum, glClientWaitSyncAEMU, uint64_t wait_on, GLbitfield flags, GLuint64 timeout)
    373 GL_ENTRY(void, glWaitSyncAEMU, uint64_t wait_on, GLbitfield flags, GLuint64 timeout)
    374 GL_ENTRY(void, glDeleteSyncAEMU, uint64_t to_delete)
    375 GL_ENTRY(GLboolean, glIsSyncAEMU, uint64_t sync)
    376 GL_ENTRY(void, glGetSyncivAEMU, uint64_t sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)
    377 
    378 # MRT / MSAA render buffer
    379 GL_ENTRY(void, glDrawBuffers, GLsizei n, const GLenum *bufs);
    380 GL_ENTRY(void, glReadBuffer, GLenum src);
    381 GL_ENTRY(void, glBlitFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
    382 
    383 # Not even implemented in host driver if < OpenGL 4.3.
    384 # But we should call this anyway if the function is available.
    385 GL_ENTRY(void, glInvalidateFramebuffer, GLenum target, GLsizei numAttachments, const GLenum *attachments)
    386 GL_ENTRY(void, glInvalidateSubFramebuffer, GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)
    387 
    388 GL_ENTRY(void, glFramebufferTextureLayer, GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
    389 GL_ENTRY(void, glRenderbufferStorageMultisample, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
    390 GL_ENTRY(void, glTexStorage2D, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
    391 GL_ENTRY(void, glGetInternalformativ, GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params)
    392 
    393 # Transform feedback - share group processing in the last two
    394 GL_ENTRY(void, glBeginTransformFeedback, GLenum primitiveMode)
    395 GL_ENTRY(void, glEndTransformFeedback, void)
    396 GL_ENTRY(void, glGenTransformFeedbacks, GLsizei n, GLuint *ids)
    397 GL_ENTRY(void, glDeleteTransformFeedbacks, GLsizei n, const GLuint *ids)
    398 GL_ENTRY(void, glBindTransformFeedback, GLenum target, GLuint id)
    399 GL_ENTRY(void, glPauseTransformFeedback, void)
    400 GL_ENTRY(void, glResumeTransformFeedback, void)
    401 GL_ENTRY(GLboolean, glIsTransformFeedback, GLuint id)
    402 GL_ENTRY(void, glTransformFeedbackVaryings, GLuint program, GLsizei count, const GLchar*const* varyings, GLenum bufferMode)
    403 GL_ENTRY(void, glTransformFeedbackVaryingsAEMU, GLuint program, GLsizei count, const char* packedVaryings, GLuint packedVaryingsLen, GLenum bufferMode)
    404 GL_ENTRY(void, glGetTransformFeedbackVarying, GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, char * name)
    405 
    406 # Sampler objects
    407 GL_ENTRY(void, glGenSamplers, GLsizei n, GLuint *samplers)
    408 GL_ENTRY(void, glDeleteSamplers, GLsizei n, const GLuint * samplers)
    409 GL_ENTRY(void, glBindSampler, GLuint unit, GLuint sampler)
    410 GL_ENTRY(void, glSamplerParameterf, GLuint sampler, GLenum pname, GLfloat param)
    411 GL_ENTRY(void, glSamplerParameteri, GLuint sampler, GLenum pname, GLint param)
    412 GL_ENTRY(void, glSamplerParameterfv, GLuint sampler, GLenum pname, const GLfloat * params)
    413 GL_ENTRY(void, glSamplerParameteriv, GLuint sampler, GLenum pname, const GLint * params)
    414 GL_ENTRY(void, glGetSamplerParameterfv, GLuint sampler, GLenum pname, GLfloat * params)
    415 GL_ENTRY(void, glGetSamplerParameteriv, GLuint sampler, GLenum pname, GLint * params)
    416 GL_ENTRY(GLboolean, glIsSampler, GLuint sampler)
    417 
    418 # Query objects
    419 GL_ENTRY(void, glGenQueries, GLsizei n, GLuint * queries)
    420 GL_ENTRY(void, glDeleteQueries, GLsizei n, const GLuint * queries)
    421 GL_ENTRY(void, glBeginQuery, GLenum target, GLuint query)
    422 GL_ENTRY(void, glEndQuery, GLenum target)
    423 GL_ENTRY(void, glGetQueryiv, GLenum target, GLenum pname, GLint * params)
    424 GL_ENTRY(void, glGetQueryObjectuiv, GLuint query, GLenum pname, GLuint * params)
    425 GL_ENTRY(GLboolean, glIsQuery, GLuint query)
    426 
    427 # Shader binary objects - need share group processing
    428 GL_ENTRY(void, glProgramParameteri, GLuint program, GLenum pname, GLint value)
    429 GL_ENTRY(void, glProgramBinary, GLuint program, GLenum binaryFormat, const void *binary, GLsizei length)
    430 GL_ENTRY(void, glGetProgramBinary, GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary)
    431 
    432 # New glGets - need share group processing for program object
    433 GL_ENTRY(GLint, glGetFragDataLocation, GLuint program, const char * name)
    434 GL_ENTRY(void, glGetInteger64v, GLenum pname, GLint64 * data)
    435 GL_ENTRY(void, glGetIntegeri_v, GLenum target, GLuint index, GLint * data)
    436 GL_ENTRY(void, glGetInteger64i_v, GLenum target, GLuint index, GLint64 * data)
    437 
    438 # Array/3D textures
    439 GL_ENTRY(void, glTexImage3D, GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * data)
    440 GL_ENTRY(void, glTexImage3DOffsetAEMU, GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLuint offset)
    441 GL_ENTRY(void, glTexStorage3D, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
    442 GL_ENTRY(void, glTexSubImage3D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * data);
    443 GL_ENTRY(void, glTexSubImage3DOffsetAEMU, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLuint offset);
    444 GL_ENTRY(void, glCompressedTexImage3D, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)
    445 GL_ENTRY(void, glCompressedTexImage3DOffsetAEMU, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLuint offset)
    446 GL_ENTRY(void, glCompressedTexSubImage3D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data);
    447 GL_ENTRY(void, glCompressedTexSubImage3DOffsetAEMU, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, GLuint data);
    448 GL_ENTRY(void, glCopyTexSubImage3D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
    449 
    450 # glGetStringi
    451 GL_ENTRY(const GLubyte*, glGetStringi, GLenum name, GLuint index);
    452 
    453 # GLES 3.1:
    454 
    455 # New get
    456 GL_ENTRY(void, glGetBooleani_v, GLenum target, GLuint index, GLboolean * data)
    457 
    458 # Memory barriers
    459 GL_ENTRY(void, glMemoryBarrier, GLbitfield barriers);
    460 GL_ENTRY(void, glMemoryBarrierByRegion, GLbitfield barriers);
    461 
    462 # Program pipelines - may require adding a new shared object type!
    463 GL_ENTRY(void, glGenProgramPipelines, GLsizei n, GLuint *pipelines)
    464 GL_ENTRY(void, glDeleteProgramPipelines, GLsizei n, const GLuint *pipelines)
    465 GL_ENTRY(void, glBindProgramPipeline, GLuint pipeline)
    466 
    467 GL_ENTRY(void, glGetProgramPipelineiv, GLuint pipeline, GLenum pname, GLint *params)
    468 GL_ENTRY(void, glGetProgramPipelineInfoLog, GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
    469 
    470 GL_ENTRY(void, glValidateProgramPipeline, GLuint pipeline)
    471 GL_ENTRY(GLboolean, glIsProgramPipeline, GLuint pipeline);
    472 GL_ENTRY(void, glUseProgramStages, GLuint pipeline, GLbitfield stages, GLuint program)
    473 
    474 # Separable shader programs - may need to change how program objects are represented and shared!
    475 GL_ENTRY(void, glActiveShaderProgram, GLuint pipeline, GLuint program);
    476 GL_ENTRY(GLuint, glCreateShaderProgramv, GLenum type, GLsizei count, const GLchar*const* strings)
    477 GL_ENTRY(GLuint, glCreateShaderProgramvAEMU, GLenum type, GLsizei count, const char *packedStrings, GLuint packedLen)
    478 # Uniforms should work easily if any program object representation problems are solved.
    479 GL_ENTRY(void, glProgramUniform1f, GLuint program, GLint location, GLfloat v0)
    480 GL_ENTRY(void, glProgramUniform2f, GLuint program, GLint location, GLfloat v0, GLfloat v1)
    481 GL_ENTRY(void, glProgramUniform3f, GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
    482 GL_ENTRY(void, glProgramUniform4f, GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
    483 GL_ENTRY(void, glProgramUniform1i, GLuint program, GLint location, GLint v0)
    484 GL_ENTRY(void, glProgramUniform2i, GLuint program, GLint location, GLint v0, GLint v1)
    485 GL_ENTRY(void, glProgramUniform3i, GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
    486 GL_ENTRY(void, glProgramUniform4i, GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
    487 GL_ENTRY(void, glProgramUniform1ui, GLuint program, GLint location, GLuint v0)
    488 GL_ENTRY(void, glProgramUniform2ui, GLuint program, GLint location, GLuint v0, GLuint v1)
    489 GL_ENTRY(void, glProgramUniform3ui, GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)
    490 GL_ENTRY(void, glProgramUniform4ui, GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
    491 GL_ENTRY(void, glProgramUniform1fv, GLuint program, GLint location, GLsizei count, const GLfloat *value)
    492 GL_ENTRY(void, glProgramUniform2fv, GLuint program, GLint location, GLsizei count, const GLfloat *value)
    493 GL_ENTRY(void, glProgramUniform3fv, GLuint program, GLint location, GLsizei count, const GLfloat *value)
    494 GL_ENTRY(void, glProgramUniform4fv, GLuint program, GLint location, GLsizei count, const GLfloat *value)
    495 GL_ENTRY(void, glProgramUniform1iv, GLuint program, GLint location, GLsizei count, const GLint *value)
    496 GL_ENTRY(void, glProgramUniform2iv, GLuint program, GLint location, GLsizei count, const GLint *value)
    497 GL_ENTRY(void, glProgramUniform3iv, GLuint program, GLint location, GLsizei count, const GLint *value)
    498 GL_ENTRY(void, glProgramUniform4iv, GLuint program, GLint location, GLsizei count, const GLint *value)
    499 GL_ENTRY(void, glProgramUniform1uiv, GLuint program, GLint location, GLsizei count, const GLuint *value)
    500 GL_ENTRY(void, glProgramUniform2uiv, GLuint program, GLint location, GLsizei count, const GLuint *value)
    501 GL_ENTRY(void, glProgramUniform3uiv, GLuint program, GLint location, GLsizei count, const GLuint *value)
    502 GL_ENTRY(void, glProgramUniform4uiv, GLuint program, GLint location, GLsizei count, const GLuint *value)
    503 GL_ENTRY(void, glProgramUniformMatrix2fv, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
    504 GL_ENTRY(void, glProgramUniformMatrix3fv, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
    505 GL_ENTRY(void, glProgramUniformMatrix4fv, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
    506 GL_ENTRY(void, glProgramUniformMatrix2x3fv, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
    507 GL_ENTRY(void, glProgramUniformMatrix3x2fv, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
    508 GL_ENTRY(void, glProgramUniformMatrix2x4fv, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
    509 GL_ENTRY(void, glProgramUniformMatrix4x2fv, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
    510 GL_ENTRY(void, glProgramUniformMatrix3x4fv, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
    511 GL_ENTRY(void, glProgramUniformMatrix4x3fv, GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
    512 
    513 # Depending on whether ANGLE shader translator supports ES 3.1, this might require us to enhance the ANGLE shader translator by a LOT.
    514 GL_ENTRY(void, glGetProgramInterfaceiv, GLuint program, GLenum programInterface, GLenum pname, GLint * params)
    515 GL_ENTRY(void, glGetProgramResourceiv, GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei * length, GLint * params)
    516 GL_ENTRY(GLuint, glGetProgramResourceIndex, GLuint program, GLenum programInterface, const char * name)
    517 GL_ENTRY(GLint, glGetProgramResourceLocation, GLuint program, GLenum programInterface, const char * name)
    518 GL_ENTRY(void, glGetProgramResourceName, GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei * length, char * name)
    519  
    520 # Compute shaders. Should just work if everything else does.
    521 GL_ENTRY(void, glBindImageTexture, GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
    522 GL_ENTRY(void, glDispatchCompute, GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
    523 
    524 ### This is an indirect call and the |indirect| field could be a GPU pointer.
    525 ### We will need to make sure that |indirect| is updated to the latest version if so,
    526 ### and probably manage a running set of GPU pointers on the host
    527 ### that the guest is using.
    528 GL_ENTRY(void, glDispatchComputeIndirect, GLintptr indirect)
    529 
    530 # Separate vertex format / buffer binding
    531 ### Requires us tp really clean up how draws work in the encoder currently.
    532 GL_ENTRY(void, glBindVertexBuffer, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
    533 GL_ENTRY(void, glVertexAttribBinding, GLuint attribindex, GLuint bindingindex);
    534 GL_ENTRY(void, glVertexAttribFormat, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
    535 GL_ENTRY(void, glVertexAttribIFormat, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
    536 GL_ENTRY(void, glVertexBindingDivisor, GLuint bindingindex, GLuint divisor)
    537 
    538 # Indirect draws
    539 ### Again, if |indirect| is a GPU pointer, we need to synchronize it before calling.
    540 GL_ENTRY(void, glDrawArraysIndirect, GLenum mode, const void * indirect)
    541 GL_ENTRY(void, glDrawArraysIndirectDataAEMU, GLenum mode, const void *indirect, GLuint datalen)
    542 GL_ENTRY(void, glDrawArraysIndirectOffsetAEMU, GLenum mode, GLuint offset)
    543 GL_ENTRY(void, glDrawElementsIndirect, GLenum mode, GLenum type, const void * indirect)
    544 GL_ENTRY(void, glDrawElementsIndirectDataAEMU, GLenum mode, GLenum type, const void *indirect, GLuint datalen)
    545 GL_ENTRY(void, glDrawElementsIndirectOffsetAEMU, GLenum mode, GLenum type, GLuint offset)
    546 
    547 # Multisampling
    548 GL_ENTRY(void, glTexStorage2DMultisample, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
    549 GL_ENTRY(void, glSampleMaski, GLuint maskNumber, GLbitfield mask)
    550 GL_ENTRY(void, glGetMultisamplefv, GLenum pname, GLuint index, GLfloat *val)
    551 
    552 # New framebuffer parameters
    553 GL_ENTRY(void, glFramebufferParameteri, GLenum target, GLenum pname, GLint param)
    554 GL_ENTRY(void, glGetFramebufferParameteriv, GLenum target, GLenum pname, GLint * params)
    555 
    556 # Texture LOD queries    
    557 # Already used in Translator's validations, just need encoder.
    558 GL_ENTRY(void, glGetTexLevelParameterfv, GLenum target, GLint level, GLenum pname, GLfloat * params)
    559 GL_ENTRY(void, glGetTexLevelParameteriv, GLenum target, GLint level, GLenum pname, GLint * params)
    560