"GL_CLIENT_VERTEX_ARRAY_BIT", # 0x00000002
])
+texture = Handle("texture", GLuint)
+
def GlFunction(*args, **kwargs):
kwargs.setdefault('call', 'GLAPIENTRY')
F(Void, "glTranslatef", [(GLfloat, "x"), (GLfloat, "y"), (GLfloat, "z")]),
F(Void, "glViewport", [(GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
F(Void, "glArrayElement", [(GLint, "i")]),
- F(Void, "glBindTexture", [(GLenum, "target"), (GLuint, "texture")]),
+ F(Void, "glBindTexture", [(GLenum, "target"), (texture, "texture")]),
F(Void, "glColorPointer", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
F(Void, "glDisableClientState", [(GLenum, "array")]),
F(Void, "glDrawArrays", [(GLenum_mode, "mode"), (GLint, "first"), (GLsizei, "count")]),
F(Void, "glPolygonOffset", [(GLfloat, "factor"), (GLfloat, "units")]),
F(Void, "glTexCoordPointer", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
F(Void, "glVertexPointer", [(GLint, "size"), (GLenum, "type"), (GLsizei, "stride"), (OpaquePointer(Const(GLvoid)), "pointer")]),
- F(GLboolean, "glAreTexturesResident", [(GLsizei, "n"), (Array(Const(GLuint), "n"), "textures"), Out(Array(GLboolean, "n"), "residences")]),
+ F(GLboolean, "glAreTexturesResident", [(GLsizei, "n"), (Array(Const(texture), "n"), "textures"), Out(Array(GLboolean, "n"), "residences")]),
F(Void, "glCopyTexImage1D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLint, "border")]),
F(Void, "glCopyTexImage2D", [(GLenum, "target"), (GLint, "level"), (GLenum, "internalformat"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height"), (GLint, "border")]),
F(Void, "glCopyTexSubImage1D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width")]),
F(Void, "glCopyTexSubImage2D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLint, "x"), (GLint, "y"), (GLsizei, "width"), (GLsizei, "height")]),
- F(Void, "glDeleteTextures", [(GLsizei, "n"), (Array(Const(GLuint), "n"), "textures")]),
- F(Void, "glGenTextures", [(GLsizei, "n"), Out(Array(GLuint, "n"), "textures")]),
+ F(Void, "glDeleteTextures", [(GLsizei, "n"), (Array(Const(texture), "n"), "textures")]),
+ F(Void, "glGenTextures", [(GLsizei, "n"), Out(Array(texture, "n"), "textures")]),
F(Void, "glGetPointerv", [(GLenum, "pname"), Out(Pointer(OpaquePointer(GLvoid)), "params")], sideeffects=False),
- F(GLboolean, "glIsTexture", [(GLuint, "texture")]),
- F(Void, "glPrioritizeTextures", [(GLsizei, "n"), (Array(Const(GLuint), "n"), "textures"), (Array(Const(GLclampf), "n"), "priorities")]),
+ F(GLboolean, "glIsTexture", [(texture, "texture")]),
+ F(Void, "glPrioritizeTextures", [(GLsizei, "n"), (Array(Const(texture), "n"), "textures"), (Array(Const(GLclampf), "n"), "priorities")]),
F(Void, "glTexSubImage1D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLsizei, "width"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__gl_image_size(format, type, width, 1, 1, 0)"), "pixels")]),
F(Void, "glTexSubImage2D", [(GLenum, "target"), (GLint, "level"), (GLint, "xoffset"), (GLint, "yoffset"), (GLsizei, "width"), (GLsizei, "height"), (GLenum, "format"), (GLenum, "type"), (Blob(Const(GLvoid), "__gl_image_size(format, type, width, height, 1, 0)"), "pixels")]),
F(Void, "glPopClientAttrib", []),
F(Void, "glDeleteFramebuffersEXT", [(GLsizei, "n"), (Array(Const(GLuint), "n"), "framebuffers")]),
F(Void, "glDeleteRenderbuffersEXT", [(GLsizei, "n"), (Array(Const(GLuint), "n"), "renderbuffers")]),
F(Void, "glFramebufferRenderbufferEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "renderbuffertarget"), (GLuint, "renderbuffer")]),
- F(Void, "glFramebufferTexture1DEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLuint, "texture"), (GLint, "level")]),
- F(Void, "glFramebufferTexture2DEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLuint, "texture"), (GLint, "level")]),
- F(Void, "glFramebufferTexture3DEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (GLuint, "texture"), (GLint, "level"), (GLint, "zoffset")]),
+ F(Void, "glFramebufferTexture1DEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (texture, "texture"), (GLint, "level")]),
+ F(Void, "glFramebufferTexture2DEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (texture, "texture"), (GLint, "level")]),
+ F(Void, "glFramebufferTexture3DEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLenum, "textarget"), (texture, "texture"), (GLint, "level"), (GLint, "zoffset")]),
F(Void, "glGenFramebuffersEXT", [(GLsizei, "n"), Out(Array(GLuint, "n"), "framebuffers")]),
F(Void, "glGenRenderbuffersEXT", [(GLsizei, "n"), Out(Array(GLuint, "n"), "renderbuffers")]),
F(Void, "glGenerateMipmapEXT", [(GLenum, "target")]),
F(GLboolean, "glIsRenderbufferEXT", [(GLuint, "renderbuffer")]),
F(Void, "glRenderbufferStorageEXT", [(GLenum, "target"), (GLenum, "internalformat"), (GLsizei, "width"), (GLsizei, "height")]),
F(Void, "glBlitFramebufferEXT", [(GLint, "srcX0"), (GLint, "srcY0"), (GLint, "srcX1"), (GLint, "srcY1"), (GLint, "dstX0"), (GLint, "dstY0"), (GLint, "dstX1"), (GLint, "dstY1"), (GLbitfield_attrib, "mask"), (GLenum, "filter")]),
- F(Void, "glFramebufferTextureLayerEXT", [(GLenum, "target"), (GLenum, "attachment"), (GLuint, "texture"), (GLint, "level"), (GLint, "layer")]),
+ F(Void, "glFramebufferTextureLayerEXT", [(GLenum, "target"), (GLenum, "attachment"), (texture, "texture"), (GLint, "level"), (GLint, "layer")]),
F(Void, "glStencilFuncSeparateATI", [(GLenum, "frontfunc"), (GLenum, "backfunc"), (GLint, "ref"), (GLuint, "mask")]),
F(Void, "glProgramEnvParameters4fvEXT", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (OpaquePointer(Const(GLfloat)), "params")]),
F(Void, "glProgramLocalParameters4fvEXT", [(GLenum, "target"), (GLuint, "index"), (GLsizei, "count"), (OpaquePointer(Const(GLfloat)), "params")]),
print ' } else {'
print ' %s = NULL;' % lvalue
print ' }'
+
+ def visit_pointer(self, pointer, lvalue, rvalue):
+ # FIXME
+ raise NotImplementedError
+ def visit_handle(self, handle, lvalue, rvalue):
+ self.visit(handle.type, lvalue, "__%s_map[%s]" %(handle.name, rvalue));
+ print ' std::cout << "%s " << static_cast<%s>(%s) << " <- " << %s << "\\n";' % (handle.name, handle.type, rvalue, lvalue)
+
def visit_blob(self, blob, lvalue, rvalue):
print ' %s = static_cast<%s>((%s).blob());' % (lvalue, blob, rvalue)
+class ValueWrapper(base.Visitor):
+
+ def visit_literal(self, literal, lvalue, rvalue):
+ pass
+
+ def visit_alias(self, alias, lvalue, rvalue):
+ self.visit(alias.type, lvalue, rvalue)
+
+ def visit_enum(self, enum, lvalue, rvalue):
+ pass
+
+ def visit_bitmask(self, bitmask, lvalue, rvalue):
+ pass
+
+ def visit_array(self, array, lvalue, rvalue):
+ print ' const Trace::Array *__a%s = dynamic_cast<const Trace::Array *>(&%s);' % (array.id, rvalue)
+ print ' if (__a%s) {' % (array.id)
+ length = '__a%s->values.size()' % array.id
+ index = '__i' + array.id
+ print ' for(size_t {i} = 0; {i} < {length}; ++{i}) {{'.format(i = index, length = length)
+ try:
+ self.visit(array.type, '%s[%s]' % (lvalue, index), '*__a%s->values[%s]' % (array.id, index))
+ finally:
+ print ' }'
+ print ' }'
+
+ def visit_pointer(self, pointer, lvalue, rvalue):
+ # FIXME
+ raise NotImplementedError
+
+ def visit_handle(self, handle, lvalue, rvalue):
+ print " __%s_map[static_cast<%s>(%s)] = %s;" % (handle.name, handle.type, rvalue, lvalue)
+ print ' std::cout << "%s " << static_cast<%s>(%s) << " -> " << %s << "\\n";' % (handle.name, handle.type, rvalue, lvalue)
+
+ def visit_blob(self, blob, lvalue, rvalue):
+ pass
+
+ def visit_string(self, string, lvalue, rvalue):
+ pass
+
+
+
def retrace_function(function):
print 'static void retrace_%s(Trace::Call &call) {' % function.name
success = True
print ' return;'
arg_names = ", ".join([arg.name for arg in function.args])
print ' %s(%s);' % (function.name, arg_names)
+ for arg in function.args:
+ if arg.output:
+ arg.type = ConstRemover().visit(arg.type)
+ rvalue = 'call.arg("%s")' % (arg.name,)
+ lvalue = arg.name
+ try:
+ ValueWrapper().visit(arg.type, lvalue, rvalue)
+ except NotImplementedError:
+ print ' // FIXME: %s' % arg.name
print '}'
print
print
print '#include "trace_parser.hpp"'
print
+ print 'static std::map<GLuint, GLuint> __texture_map;'
+ print
retrace_functions(glapi.glapi.functions)