VirtualBox

source: vbox/trunk/src/VBox/Additions/common/crOpenGL/windows_getprocaddress.py@ 21077

最後變更 在這個檔案從21077是 20635,由 vboxsync 提交於 15 年 前

crOpenGL: add WGL_EXT_pixel_format and WGL_ARB_pixel_format extensions

  • 屬性 svn:eol-style 設為 native
  • 屬性 svn:keywords 設為 Id
檔案大小: 5.0 KB
 
1# Copyright (c) 2001, Stanford University
2# All rights reserved.
3#
4# See the file LICENSE.txt for information on redistributing this software.
5
6import sys
7
8import apiutil
9
10apiutil.CopyrightC()
11
12print """
13/* DO NOT EDIT - THIS FILE GENERATED BY THE getprocaddress.py SCRIPT */
14#include "chromium.h"
15#include "cr_string.h"
16#include "cr_version.h"
17#include "stub.h"
18#include "icd_drv.h"
19#include "cr_gl.h"
20#include "cr_error.h"
21
22#ifdef WINDOWS
23#pragma warning( disable: 4055 )
24#endif
25
26"""
27
28print """
29struct name_address {
30 const char *name;
31 CR_PROC address;
32};
33
34PROC WINAPI wglGetProcAddress_prox( LPCSTR name );
35
36static struct name_address functions[] = {
37"""
38
39
40keys = apiutil.GetAllFunctions(sys.argv[1]+"/APIspec.txt")
41for func_name in keys:
42 if "Chromium" == apiutil.Category(func_name):
43 continue
44 if func_name == "BoundsInfoCR":
45 continue
46 if "GL_chromium" == apiutil.Category(func_name):
47 pass #continue
48
49 wrap = apiutil.GetCategoryWrapper(func_name)
50 name = "gl" + func_name
51 address = "cr_gl" + func_name
52 if wrap:
53 print '#ifdef CR_%s' % wrap
54 print '\t{ "%s", (CR_PROC) %s },' % (name, address)
55 if wrap:
56 print '#endif'
57
58
59print "\t/* Chromium binding/glue functions */"
60
61for func_name in keys:
62 if (func_name == "Writeback" or
63 func_name == "BoundsInfoCR"):
64 continue
65 if apiutil.Category(func_name) == "Chromium":
66 print '\t{ "cr%s", (CR_PROC) cr%s },' % (func_name, func_name)
67
68print "\t/* Windows ICD functions */"
69
70for func_name in ( "CopyContext",
71 "CreateContext",
72 "CreateLayerContext",
73 "DeleteContext",
74 "DescribeLayerPlane",
75 "DescribePixelFormat",
76 "GetLayerPaletteEntries",
77 "RealizeLayerPalette",
78 "SetLayerPaletteEntries",
79 "SetPixelFormat",
80 "ShareLists",
81 "SwapBuffers",
82 "SwapLayerBuffers",
83 "ReleaseContext",
84 "SetContext",
85 "ValidateVersion"):
86 print '\t{ "Drv%s", (CR_PROC) Drv%s },' % (func_name, func_name)
87
88print '\t{ "DrvGetProcAddress", (CR_PROC) wglGetProcAddress_prox },'
89
90print """
91 { NULL, NULL }
92};
93
94extern const GLubyte * WINAPI wglGetExtensionsStringEXT_prox( HDC hdc );
95extern BOOL WINAPI wglChoosePixelFormatEXT_prox(HDC hdc, const int *piAttributes, const FLOAT *pfAttributes, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
96extern BOOL WINAPI wglGetPixelFormatAttribivEXT_prox(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *pValues);
97extern BOOL WINAPI wglGetPixelFormatAttribfvEXT_prox(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, float *pValues);
98
99CR_PROC CR_APIENTRY crGetProcAddress( const char *name )
100{
101 int i;
102 wglGetExtensionsStringEXTFunc_t wglGetExtensionsStringEXT = wglGetExtensionsStringEXT_prox;
103 wglChoosePixelFormatEXTFunc_t wglChoosePixelFormatEXT = wglChoosePixelFormatEXT_prox;
104 wglGetPixelFormatAttribivEXTFunc_t wglGetPixelFormatAttribivEXT = wglGetPixelFormatAttribivEXT_prox;
105 wglGetPixelFormatAttribfvEXTFunc_t wglGetPixelFormatAttribfvEXT = wglGetPixelFormatAttribfvEXT_prox;
106
107 stubInit();
108
109 for (i = 0; functions[i].name; i++) {
110 if (crStrcmp(name, functions[i].name) == 0) {
111 /*crDebug("crGetProcAddress(%s) returns %p", name, functions[i].address);*/
112 return functions[i].address;
113 }
114 }
115
116 if (!crStrcmp( name, "wglGetExtensionsStringEXT" )) return (CR_PROC) wglGetExtensionsStringEXT;
117 if (!crStrcmp( name, "wglGetExtensionsStringARB" )) return (CR_PROC) wglGetExtensionsStringEXT;
118
119 if (!crStrcmp( name, "wglChoosePixelFormatEXT" )) return (CR_PROC) wglChoosePixelFormatEXT;
120 if (!crStrcmp( name, "wglGetPixelFormatAttribivEXT" )) return (CR_PROC) wglGetPixelFormatAttribivEXT;
121 if (!crStrcmp( name, "wglGetPixelFormatAttribfvEXT" )) return (CR_PROC) wglGetPixelFormatAttribfvEXT;
122
123 if (!crStrcmp( name, "wglChoosePixelFormatARB" )) return (CR_PROC) wglChoosePixelFormatEXT;
124 if (!crStrcmp( name, "wglGetPixelFormatAttribivARB" )) return (CR_PROC) wglGetPixelFormatAttribivEXT;
125 if (!crStrcmp( name, "wglGetPixelFormatAttribfvARB" )) return (CR_PROC) wglGetPixelFormatAttribfvEXT;
126
127 crDebug("Returning GetProcAddress:NULL for %s", name);
128 return NULL;
129}
130
131"""
132
133
134
135# XXX should crGetProcAddress really handle WGL/GLX functions???
136print_foo = """
137/* As these are Windows specific (i.e. wgl), define these now.... */
138#ifdef WINDOWS
139 {
140 wglGetExtensionsStringEXTFunc_t wglGetExtensionsStringEXT = NULL;
141 wglChoosePixelFormatFunc_t wglChoosePixelFormatEXT = NULL;
142 wglGetPixelFormatAttribivEXTFunc_t wglGetPixelFormatAttribivEXT = NULL;
143 wglGetPixelFormatAttribfvEXTFunc_t wglGetPixelFormatAttribfvEXT = NULL;
144 if (!crStrcmp( name, "wglGetExtensionsStringEXT" )) return (CR_PROC) wglGetExtensionsStringEXT;
145 if (!crStrcmp( name, "wglChoosePixelFormatEXT" )) return (CR_PROC) wglChoosePixelFormatEXT;
146 if (!crStrcmp( name, "wglGetPixelFormatAttribivEXT" )) return (CR_PROC) wglGetPixelFormatAttribivEXT;
147 if (!crStrcmp( name, "wglGetPixelFormatAttribfvEXT" )) return (CR_PROC) wglGetPixelFormatAttribfvEXT;
148 }
149#endif
150"""
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette