mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
Generate mesa.def file for Windows.
This commit is contained in:
parent
c85f0fa177
commit
d48382c778
1 changed files with 224 additions and 0 deletions
224
src/mesa/glapi/mesadef.py
Normal file
224
src/mesa/glapi/mesadef.py
Normal file
|
|
@ -0,0 +1,224 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
# $Id: mesadef.py,v 1.1 2004/01/14 17:45:24 kschultz Exp $
|
||||
|
||||
# Mesa 3-D graphics library
|
||||
# Version: 4.1
|
||||
#
|
||||
# Copyright (C) 1999-2001 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 mesa.def file for Windows.
|
||||
#
|
||||
# Usage:
|
||||
# mesadef.py >mesa.def
|
||||
# Then copy to src/mesa/drivers/windows/gdi
|
||||
#
|
||||
# Dependencies:
|
||||
# The apispec file must be in the current directory.
|
||||
|
||||
|
||||
|
||||
import apiparser
|
||||
import string
|
||||
|
||||
|
||||
def PrintHead():
|
||||
print '; DO NOT EDIT - This file generated automatically by mesadef.py script'
|
||||
print 'DESCRIPTION \'Mesa (OpenGL work-alike) for Win32\''
|
||||
print 'VERSION 6.0'
|
||||
print ';'
|
||||
print '; Module definition file for Mesa (OPENGL32.DLL)'
|
||||
print ';'
|
||||
print '; Note: The OpenGL functions use the STDCALL'
|
||||
print '; function calling convention. Microsoft\'s'
|
||||
print '; OPENGL32 uses this convention and so must the'
|
||||
print '; Mesa OPENGL32 so that the Mesa DLL can be used'
|
||||
print '; as a drop-in replacement.'
|
||||
print ';'
|
||||
print '; The linker exports STDCALL entry points with'
|
||||
print '; \'decorated\' names; e.g., _glBegin@0, where the'
|
||||
print '; trailing number is the number of bytes of '
|
||||
print '; parameter data pushed onto the stack. The'
|
||||
print '; callee is responsible for popping this data'
|
||||
print '; off the stack, usually via a RETF n instruction.'
|
||||
print ';'
|
||||
print '; However, the Microsoft OPENGL32.DLL does not export'
|
||||
print '; the decorated names, even though the calling convention'
|
||||
print '; is STDCALL. So, this module definition file is'
|
||||
print '; needed to force the Mesa OPENGL32.DLL to export the'
|
||||
print '; symbols in the same manner as the Microsoft DLL.'
|
||||
print '; Were it not for this problem, this file would not'
|
||||
print '; be needed (for the gl* functions) since the entry'
|
||||
print '; points are compiled with dllexport declspec.'
|
||||
print ';'
|
||||
print '; However, this file is still needed to export "internal"'
|
||||
print '; Mesa symbols for the benefit of the OSMESA32.DLL.'
|
||||
print ';'
|
||||
print 'EXPORTS'
|
||||
return
|
||||
#enddef
|
||||
|
||||
|
||||
def PrintTail():
|
||||
print ';'
|
||||
print '; WGL API'
|
||||
print '\twglChoosePixelFormat'
|
||||
print '\twglCopyContext'
|
||||
print '\twglCreateContext'
|
||||
print '\twglCreateLayerContext'
|
||||
print '\twglDeleteContext'
|
||||
print '\twglDescribeLayerPlane'
|
||||
print '\twglDescribePixelFormat'
|
||||
print '\twglGetCurrentContext'
|
||||
print '\twglGetCurrentDC'
|
||||
print '\twglGetLayerPaletteEntries'
|
||||
print '\twglGetPixelFormat'
|
||||
print '\twglGetProcAddress'
|
||||
print '\twglMakeCurrent'
|
||||
print '\twglRealizeLayerPalette'
|
||||
print '\twglSetLayerPaletteEntries'
|
||||
print '\twglSetPixelFormat'
|
||||
print '\twglShareLists'
|
||||
print '\twglSwapBuffers'
|
||||
print '\twglSwapLayerBuffers'
|
||||
print '\twglUseFontBitmapsA'
|
||||
print '\twglUseFontBitmapsW'
|
||||
print '\twglUseFontOutlinesA'
|
||||
print '\twglUseFontOutlinesW'
|
||||
print ';'
|
||||
print '; Mesa internals - mostly for OSMESA'
|
||||
print '\t_ac_CreateContext'
|
||||
print '\t_ac_DestroyContext'
|
||||
print '\t_ac_InvalidateState'
|
||||
print '\t_glapi_get_context'
|
||||
print '\t_glapi_get_proc_address'
|
||||
print '\t_mesa_base_compressed_texformat'
|
||||
print '\t_mesa_buffer_data'
|
||||
print '\t_mesa_buffer_map'
|
||||
print '\t_mesa_buffer_subdata'
|
||||
print '\t_mesa_bzero'
|
||||
print '\t_mesa_calloc'
|
||||
print '\t_mesa_choose_tex_format'
|
||||
print '\t_mesa_compressed_texture_size'
|
||||
print '\t_mesa_create_framebuffer'
|
||||
print '\t_mesa_create_visual'
|
||||
print '\t_mesa_delete_buffer_object'
|
||||
print '\t_mesa_delete_texture_object'
|
||||
print '\t_mesa_destroy_framebuffer'
|
||||
print '\t_mesa_destroy_visual'
|
||||
print '\t_mesa_enable_1_3_extensions'
|
||||
print '\t_mesa_enable_1_4_extensions'
|
||||
print '\t_mesa_enable_1_5_extensions'
|
||||
print '\t_mesa_enable_sw_extensions'
|
||||
print '\t_mesa_error'
|
||||
print '\t_mesa_free'
|
||||
print '\t_mesa_free_context_data'
|
||||
print '\t_mesa_get_current_context'
|
||||
print '\t_mesa_init_default_imports'
|
||||
print '\t_mesa_initialize_context'
|
||||
print '\t_mesa_make_current'
|
||||
print '\t_mesa_memcpy'
|
||||
print '\t_mesa_memset'
|
||||
print '\t_mesa_new_buffer_object'
|
||||
print '\t_mesa_new_texture_object'
|
||||
print '\t_mesa_problem'
|
||||
print '\t_mesa_ResizeBuffersMESA'
|
||||
print '\t_mesa_store_compressed_teximage1d'
|
||||
print '\t_mesa_store_compressed_teximage2d'
|
||||
print '\t_mesa_store_compressed_teximage3d'
|
||||
print '\t_mesa_store_compressed_texsubimage1d'
|
||||
print '\t_mesa_store_compressed_texsubimage2d'
|
||||
print '\t_mesa_store_compressed_texsubimage3d'
|
||||
print '\t_mesa_store_teximage1d'
|
||||
print '\t_mesa_store_teximage2d'
|
||||
print '\t_mesa_store_teximage3d'
|
||||
print '\t_mesa_store_texsubimage1d'
|
||||
print '\t_mesa_store_texsubimage2d'
|
||||
print '\t_mesa_store_texsubimage3d'
|
||||
print '\t_mesa_strcmp'
|
||||
print '\t_mesa_test_proxy_teximage'
|
||||
print '\t_mesa_Viewport'
|
||||
print '\t_swrast_Accum'
|
||||
print '\t_swrast_alloc_buffers'
|
||||
print '\t_swrast_Bitmap'
|
||||
print '\t_swrast_CopyPixels'
|
||||
print '\t_swrast_DrawBuffer'
|
||||
print '\t_swrast_DrawPixels'
|
||||
print '\t_swrast_GetDeviceDriverReference'
|
||||
print '\t_swrast_Clear'
|
||||
print '\t_swrast_choose_line'
|
||||
print '\t_swrast_choose_triangle'
|
||||
print '\t_swrast_CopyColorSubTable'
|
||||
print '\t_swrast_CopyColorTable'
|
||||
print '\t_swrast_CopyConvolutionFilter1D'
|
||||
print '\t_swrast_CopyConvolutionFilter2D'
|
||||
print '\t_swrast_copy_teximage1d'
|
||||
print '\t_swrast_copy_teximage2d'
|
||||
print '\t_swrast_copy_texsubimage1d'
|
||||
print '\t_swrast_copy_texsubimage2d'
|
||||
print '\t_swrast_copy_texsubimage3d'
|
||||
print '\t_swrast_CreateContext'
|
||||
print '\t_swrast_DestroyContext'
|
||||
print '\t_swrast_InvalidateState'
|
||||
print '\t_swrast_ReadPixels'
|
||||
print '\t_swrast_zbuffer_address'
|
||||
print '\t_swsetup_Wakeup'
|
||||
print '\t_swsetup_CreateContext'
|
||||
print '\t_swsetup_DestroyContext'
|
||||
print '\t_swsetup_InvalidateState'
|
||||
print '\t_tnl_CreateContext'
|
||||
print '\t_tnl_DestroyContext'
|
||||
print '\t_tnl_InvalidateState'
|
||||
print '\t_tnl_MakeCurrent'
|
||||
print '\t_tnl_run_pipeline'
|
||||
#enddef
|
||||
|
||||
|
||||
records = []
|
||||
|
||||
def FindOffset(funcName):
|
||||
for (name, alias, offset) in records:
|
||||
if name == funcName:
|
||||
return offset
|
||||
#endif
|
||||
#endfor
|
||||
return -1
|
||||
#enddef
|
||||
|
||||
|
||||
def EmitEntry(name, returnType, argTypeList, argNameList, alias, offset):
|
||||
if alias == '':
|
||||
dispatchName = name
|
||||
else:
|
||||
dispatchName = alias
|
||||
if offset < 0:
|
||||
offset = FindOffset(dispatchName)
|
||||
if offset >= 0 and string.find(name, "unused") == -1:
|
||||
print '\tgl%s' % (name)
|
||||
# save this info in case we need to look up an alias later
|
||||
records.append((name, dispatchName, offset))
|
||||
|
||||
#enddef
|
||||
|
||||
|
||||
PrintHead()
|
||||
apiparser.ProcessSpecFile("APIspec", EmitEntry)
|
||||
PrintTail()
|
||||
Loading…
Add table
Reference in a new issue