initial check-in
This commit is contained in:
95
src/mesa/glapi/gloffsets.py
Normal file
95
src/mesa/glapi/gloffsets.py
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
# $Id: gloffsets.py,v 1.1 2000/02/22 22:45:20 brianp Exp $
|
||||||
|
|
||||||
|
# Mesa 3-D graphics library
|
||||||
|
# Version: 3.3
|
||||||
|
#
|
||||||
|
# Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# in all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
|
# Generate the glapioffsets.h file.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# gloffsets.py >glapioffsets.h
|
||||||
|
#
|
||||||
|
# Dependencies:
|
||||||
|
# The gl.spec file from the SI must be in the current directory.
|
||||||
|
#
|
||||||
|
# Brian Paul 3 February 2000
|
||||||
|
|
||||||
|
|
||||||
|
import string
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
def PrintHead():
|
||||||
|
print '/* DO NOT EDIT - This file generated automatically */'
|
||||||
|
print '#ifndef _GLAPI_OFFSETS_H_'
|
||||||
|
print '#define _GLAPI_OFFSETS_H_'
|
||||||
|
print ''
|
||||||
|
return
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
def PrintTail():
|
||||||
|
print ''
|
||||||
|
print '#endif'
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
def GenerateDefine(name, offset):
|
||||||
|
s = '#define _gloffset_' + name + ' ' + offset
|
||||||
|
return s;
|
||||||
|
#enddef
|
||||||
|
|
||||||
|
|
||||||
|
def PrintDefines():
|
||||||
|
functionPattern = re.compile('^[a-zA-Z0-9]+\(')
|
||||||
|
functionNamePattern = re.compile('^[a-zA-Z0-9]+')
|
||||||
|
|
||||||
|
funcName = ''
|
||||||
|
|
||||||
|
f = open('gl.spec')
|
||||||
|
for line in f.readlines():
|
||||||
|
|
||||||
|
m = functionPattern.match(line)
|
||||||
|
if m:
|
||||||
|
# extract funcName
|
||||||
|
n = functionNamePattern.findall(line)
|
||||||
|
funcName = n[0]
|
||||||
|
|
||||||
|
m = string.split(line)
|
||||||
|
if len(m) > 1:
|
||||||
|
if m[0] == 'param':
|
||||||
|
paramName = m[1]
|
||||||
|
if m[0] == 'offset':
|
||||||
|
funcOffset = m[1]
|
||||||
|
s = GenerateDefine(funcName, funcOffset)
|
||||||
|
print s
|
||||||
|
#endif
|
||||||
|
#endfor
|
||||||
|
#enddef
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PrintHead()
|
||||||
|
PrintDefines()
|
||||||
|
PrintTail()
|
295
src/mesa/glapi/gltable.py
Normal file
295
src/mesa/glapi/gltable.py
Normal file
@@ -0,0 +1,295 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
# $Id: gltable.py,v 1.1 2000/02/22 22:45:20 brianp Exp $
|
||||||
|
|
||||||
|
# Mesa 3-D graphics library
|
||||||
|
# Version: 3.3
|
||||||
|
#
|
||||||
|
# Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included
|
||||||
|
# in all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
|
# Generate the glapitable.h file.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# gltable.py >glapitable.h
|
||||||
|
#
|
||||||
|
# Dependencies:
|
||||||
|
# The gl.spec file from the SI must be in the current directory.
|
||||||
|
#
|
||||||
|
# Brian Paul 3 February 2000
|
||||||
|
|
||||||
|
|
||||||
|
import string
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# This table maps types from the gl.spec file to the OpenGL C types.
|
||||||
|
#
|
||||||
|
TypeTable = {
|
||||||
|
'AttribMask' : 'GLbitfield',
|
||||||
|
'Boolean' : 'GLboolean',
|
||||||
|
'CheckedFloat32' : 'GLfloat',
|
||||||
|
'CheckedInt32' : 'GLint',
|
||||||
|
'ClampedColorF' : 'GLclampf',
|
||||||
|
'ClampedFloat32' : 'GLclampf',
|
||||||
|
'ClampedFloat64' : 'GLclampd',
|
||||||
|
'ClampedStencilValue' : 'GLint',
|
||||||
|
'ClearBufferMask' : 'GLbitfield',
|
||||||
|
'ClientAttribMask' : 'GLbitfield',
|
||||||
|
'ColorB' : 'GLbyte',
|
||||||
|
'ColorD' : 'GLdouble',
|
||||||
|
'ColorF' : 'GLfloat',
|
||||||
|
'ColorI' : 'GLint',
|
||||||
|
'ColorIndexValueD' : 'GLdouble',
|
||||||
|
'ColorIndexValueF' : 'GLfloat',
|
||||||
|
'ColorIndexValueI' : 'GLint',
|
||||||
|
'ColorIndexValueS' : 'GLshort',
|
||||||
|
'ColorIndexValueUB' : 'GLubyte',
|
||||||
|
'ColorS' : 'GLshort',
|
||||||
|
'ColorUB' : 'GLubyte',
|
||||||
|
'ColorUI' : 'GLuint',
|
||||||
|
'ColorUS' : 'GLushort',
|
||||||
|
'CoordF' : 'GLfloat',
|
||||||
|
'CoordD' : 'GLdouble',
|
||||||
|
'CoordI' : 'GLint',
|
||||||
|
'CoordS' : 'GLshort',
|
||||||
|
'FeedbackElement' : 'GLfloat',
|
||||||
|
'Float32' : 'GLfloat',
|
||||||
|
'Float64' : 'GLdouble',
|
||||||
|
'Float32Pointer' : 'GLfloat',
|
||||||
|
'Float64Pointer' : 'GLdouble',
|
||||||
|
'Int8' : 'GLbyte',
|
||||||
|
'Int16' : 'GLshort',
|
||||||
|
'Int32' : 'GLint',
|
||||||
|
'LineStipple' : 'GLushort',
|
||||||
|
'List' : 'GLuint',
|
||||||
|
'MaskedColorIndexValueF' : 'GLfloat',
|
||||||
|
'MaskedColorIndexValueI' : 'GLuint',
|
||||||
|
'MaskedStencilValue' : 'GLuint',
|
||||||
|
'PixelInternalFormat' : 'GLenum',
|
||||||
|
'SelectName' : 'GLuint',
|
||||||
|
'SizeI' : 'GLsizei',
|
||||||
|
'StencilValue' : 'GLint',
|
||||||
|
'String' : 'const GLubyte *',
|
||||||
|
'TexelInternalFormat' : 'GLint',
|
||||||
|
'TextureComponentCount' : 'GLint',
|
||||||
|
'WinCoord' : 'GLint',
|
||||||
|
'UInt8' : 'GLubyte',
|
||||||
|
'UInt16' : 'GLushort',
|
||||||
|
'UInt32' : 'GLuint',
|
||||||
|
'Void' : 'GLvoid',
|
||||||
|
'VoidPointer' : 'GLvoid *',
|
||||||
|
'void' : 'void',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Return C-style argument type string.
|
||||||
|
# Input: t = a type like ListMode, Int16, CoordF, etc.
|
||||||
|
# pointerQual = '' or '*'
|
||||||
|
# constQual = '' or 'const '
|
||||||
|
# Return: a string like "const GLubyte *'
|
||||||
|
#
|
||||||
|
def ActualType(t, pointerQual, constQual):
|
||||||
|
if TypeTable.has_key(t):
|
||||||
|
type = TypeTable[t]
|
||||||
|
else:
|
||||||
|
type = 'GLenum'
|
||||||
|
if pointerQual == '':
|
||||||
|
s = constQual + type
|
||||||
|
else:
|
||||||
|
s = constQual + type + ' ' + pointerQual
|
||||||
|
return s
|
||||||
|
#enddef
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Convert a Python list of arguments into a string.
|
||||||
|
#
|
||||||
|
def ArgListToString(argList):
|
||||||
|
result = ''
|
||||||
|
i = 1
|
||||||
|
n = len(argList)
|
||||||
|
for pair in argList:
|
||||||
|
result = result + pair[0] + ' ' + pair[1]
|
||||||
|
if i < n:
|
||||||
|
result = result + ', '
|
||||||
|
i = i + 1
|
||||||
|
|
||||||
|
if result == '':
|
||||||
|
result = 'void'
|
||||||
|
return result
|
||||||
|
#enddef
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Return a dispatch table entry, like "void (*Enable)(GLenum cap);"
|
||||||
|
#
|
||||||
|
def MakeTableEntry(retType, funcName, argList, offset):
|
||||||
|
s = ' '
|
||||||
|
s = s + ActualType(retType, '', '')
|
||||||
|
s = s + ' (*'
|
||||||
|
s = s + funcName
|
||||||
|
s = s + ')('
|
||||||
|
s = s + ArgListToString(argList)
|
||||||
|
s = s + '); /* '
|
||||||
|
s = s + str(offset)
|
||||||
|
s = s + ' */'
|
||||||
|
return s
|
||||||
|
#enddef
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def GroupFromCategory(category):
|
||||||
|
baseCats = [
|
||||||
|
'display-list',
|
||||||
|
'drawing',
|
||||||
|
'drawing-control',
|
||||||
|
'feedback',
|
||||||
|
'framebuf',
|
||||||
|
'misc',
|
||||||
|
'modeling',
|
||||||
|
'pixel-op',
|
||||||
|
'pixel-rw',
|
||||||
|
'state-req',
|
||||||
|
'xform'
|
||||||
|
]
|
||||||
|
|
||||||
|
if baseCats.count(category) > 0:
|
||||||
|
return 'GL_1_0'
|
||||||
|
else:
|
||||||
|
return 'GL_' + category
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
def PrintGroup(group):
|
||||||
|
s = ' /* '
|
||||||
|
s = s + group
|
||||||
|
s = s + ' */'
|
||||||
|
print s
|
||||||
|
#enddef
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Parse gl.spec to generate all the function pointers in the dispatch struct.
|
||||||
|
#
|
||||||
|
def PrintTableEntries():
|
||||||
|
functionPattern = re.compile('^[a-zA-Z0-9]+\(')
|
||||||
|
functionNamePattern = re.compile('^[a-zA-Z0-9]+')
|
||||||
|
|
||||||
|
prevGroup = ''
|
||||||
|
funcName = ''
|
||||||
|
returnType = ''
|
||||||
|
argList = [ ]
|
||||||
|
maxOffset = 0
|
||||||
|
table = { }
|
||||||
|
|
||||||
|
f = open('gl.spec')
|
||||||
|
for line in f.readlines():
|
||||||
|
|
||||||
|
m = functionPattern.match(line)
|
||||||
|
if m:
|
||||||
|
# extract funcName
|
||||||
|
n = functionNamePattern.findall(line)
|
||||||
|
funcName = n[0]
|
||||||
|
argList = [ ]
|
||||||
|
#endif
|
||||||
|
|
||||||
|
m = string.split(line)
|
||||||
|
if len(m) > 1:
|
||||||
|
# return datatype
|
||||||
|
if m[0] == 'return':
|
||||||
|
returnType = m[1]
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# function parameter
|
||||||
|
if m[0] == 'param':
|
||||||
|
constQual = ''
|
||||||
|
pointerQual = ''
|
||||||
|
if len(m) >= 5 and m[4] == 'array':
|
||||||
|
pointerQual = '*'
|
||||||
|
if m[3] == 'in':
|
||||||
|
constQual = 'const '
|
||||||
|
paramName = m[1]
|
||||||
|
paramType = ActualType(m[2], pointerQual, constQual)
|
||||||
|
|
||||||
|
argList.append( (paramType, paramName) )
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# # category
|
||||||
|
if m[0] == 'category':
|
||||||
|
category = m[1]
|
||||||
|
group = GroupFromCategory(category)
|
||||||
|
if group != prevGroup:
|
||||||
|
# PrintGroup(group)
|
||||||
|
prevGroup = group
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# end of function spec
|
||||||
|
if m[0] == 'offset':
|
||||||
|
funcOffset = int(m[1])
|
||||||
|
if funcOffset > maxOffset:
|
||||||
|
maxOffset = funcOffset
|
||||||
|
#PrintProto(returnType, funcName, argList)
|
||||||
|
s = MakeTableEntry(returnType, funcName, argList, funcOffset)
|
||||||
|
# print s
|
||||||
|
table[funcOffset] = s;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endfor
|
||||||
|
|
||||||
|
# Now dump the table, this effectively does the sort by offset number
|
||||||
|
for i in range(0, maxOffset + 1):
|
||||||
|
if table.has_key(i):
|
||||||
|
print table[i]
|
||||||
|
|
||||||
|
#enddef
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def PrintHead():
|
||||||
|
print '/* DO NOT EDIT - This file generated automatically */'
|
||||||
|
print '#ifndef _GLAPI_TABLE_H_'
|
||||||
|
print '#define _GLAPI_TABLE_H_'
|
||||||
|
print ''
|
||||||
|
print '#include <GL/gl.h>'
|
||||||
|
print ''
|
||||||
|
print 'struct _glapi_table'
|
||||||
|
print '{'
|
||||||
|
return
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
def PrintTail():
|
||||||
|
print '};'
|
||||||
|
print ''
|
||||||
|
print '#endif'
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PrintHead()
|
||||||
|
PrintTableEntries()
|
||||||
|
PrintTail()
|
Reference in New Issue
Block a user