GL_REGAL_proc_address extension adding glGetProcAddressREGAL

refresh GLEW and use glGetProcAddressREGAL in GLEW_REGAL mode
improved support of NV_path_rendering entry points
fix for glewinfo when using Regal on OSX
fix Linux build of RegalGLU and RegalGLUT
tiger example works on Linux and OSX now
This commit is contained in:
Scott Nations 2014-01-20 15:02:39 -06:00
parent 7864ed22f0
commit 07a4ea3d8c
49 changed files with 1332 additions and 679 deletions

View file

@ -36,6 +36,7 @@ GLU.OBJS := $(GLU.OBJS:.c=.o) $(GLU.OBJS:.cc=.o)
GLU.OBJS := $(filter %.o,$(GLU.OBJS))
GLU.DEPS := $(GLU.OBJS:.o=.d)
GLU.LIBS := -Llib/$(SYSTEM) -lRegal
GLU.LIBS += -lstdc++
GLU.LIBS += -pthread -lm
-include $(GLU.DEPS)
@ -80,7 +81,7 @@ tmp/$(SYSTEM)/glu/shared/%.o: src/glu/libnurbs/nurbtess/%.cc
ifdef GLU.SHARED
lib/$(SYSTEM)/$(GLU.SHARED): $(GLU.OBJS) lib/$(SYSTEM)/$(REGAL.SHARED)
@mkdir -p $(dir $@)
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) $(LDFLAGS.DYNAMIC) $(GLU.LIBS) $(REGAL.LDFLAGS) -o $@ $(GLU.OBJS)
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) $(LDFLAGS.DYNAMIC) $(REGAL.LDFLAGS) -o $@ $(GLU.OBJS) $(GLU.LIBS)
ifneq ($(STRIP),)
$(LOG_STRIP)$(STRIP) -x $@
endif

View file

@ -21,6 +21,7 @@ endif
ifdef GLUT.STATIC
include Makefile.regal
include Makefile.glu
ifndef REGAL.STATIC
$(error RegalGLUT needs Regal.)

View file

@ -43,9 +43,18 @@ TIGER.OBJS := $(addprefix tmp/$(SYSTEM)/tiger/static/,$(TIGER.SRCS.NAMES))
TIGER.OBJS := $(TIGER.OBJS:.c=.o)
TIGER.DEPS := $(TIGER.DEPS:.o=.d)
TIGER.CFLAGS := -Iinclude -Iexamples/tiger -DGLEW_NO_GLU=1
TIGER.LIBS += -Llib/$(SYSTEM) $(LDFLAGS.GLUT) $(LDFLAGS.GLU) $(LDFLAGS.X11)
TIGER.LIBS += -lRegalGLEW
TIGER.LIBS += -lm -pthread
TIGER.LIBS += -Llib/$(SYSTEM)
# use RegalGLUT, if possible
ifdef GLUT.SHARED
TIGER.LIBS += -lRegalGLUT -lRegalGLU
else
TIGER.LIBS += $(LDFLAGS.GLUT) $(LDFLAGS.GLU) $(LDFLAGS.X11)
endif
TIGER.LIBS += -lRegalGLEW -lRegal
TIGER.LIBS += -lm
-include $(TIGER.DEPS)
@ -60,13 +69,11 @@ ifdef GLUT.SHARED
bin/$(SYSTEM)/tiger: lib/$(SYSTEM)/$(GLUT.SHARED) lib/$(SYSTEM)/$(GLU.SHARED)
endif
ifdef GLEW.SHARED
bin/$(SYSTEM)/tiger: lib/$(SYSTEM)/$(GLEW.SHARED)
endif
bin/$(SYSTEM)/tiger: lib/$(SYSTEM)/$(GLEW.SHARED) lib/$(SYSTEM)/$(REGAL.SHARED)
bin/$(SYSTEM)/tiger: $(TIGER.OBJS) lib/$(SYSTEM)/$(REGAL.SHARED)
bin/$(SYSTEM)/tiger: $(TIGER.OBJS)
@mkdir -p $(dir $@)
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) -o $@ $(TIGER.OBJS) lib/$(SYSTEM)/$(REGAL.SHARED) $(TIGER.LIBS) $(REGAL.LDFLAGS)
$(LOG_LD)$(CCACHE) $(LD) $(LDFLAGS.EXTRA) -o $@ $(TIGER.OBJS) $(TIGER.LIBS)
ifneq ($(STRIP),)
$(LOG_STRIP)$(STRIP) -x $@
endif

View file

@ -0,0 +1,88 @@
Name
REGAL_proc_address
Name Strings
GL_REGAL_proc_address
Contact
Nigel Stewart, NVIDIA (nstewart 'at' nvidia.com)
Contributors
None.
Status
XXX - Experimental - not approved by Khronos.
Version
Last Modified Date: January 14, 2014
Revision: 1
Number
REGAL Extension #7
Dependencies
None.
Overview
This extension provides the same functionality as
glutGetProcAddress as implemented by The OpenGL Utility
Toolkit (GLUT) and freeglut.
It is provided as part of Regal for the purpose of
easing the retargeting of desktop OpenGL code
without requiring GLUT or freeglut for procedure
address query purposes.
IP Status
No known IP claims.
glutGetProcAddress is implemented by The OpenGL Utility
Toolkit (GLUT) and freeglut.
New Procedures and Functions
void *glGetProcAddressREGAL(const char *name);
New Types
None
New Tokens
None
Additions to Chapter x of the OpenGL 4.2 (Core Profile) Specification
(OpenGL Operation)
TODO
Errors
None.
New State
None.
New Implementation Dependent State
None.
Issues
None.
Revision History
Revision 1, 2014/01/14
- Initial revision.

View file

@ -209,7 +209,6 @@ static void menu(int choice)
int main(int argc, char **argv)
{
GLenum status;
GLboolean hasDSA;
int samples = 0;
int i;
@ -247,7 +246,7 @@ int main(int argc, char **argv)
glutCreateWindow("Classic PostScript tiger NV_path_rendering example");
// Regal workaround for OSX GLUT
// Regal workaround for Mac OS X GLUT
#ifdef __APPLE__
extern void *CGLGetCurrentContext(void);
@ -265,12 +264,6 @@ int main(int argc, char **argv)
printf("samples per pixel = %d\n", glutGet(GLUT_WINDOW_NUM_SAMPLES));
printf("Executable: %d bit\n", (int)(8*sizeof(int *)));
printf("\n");
printf("Use left mouse button to scale/zoom (vertical, up/down) and rotate (right=clockwise, left=ccw)\n");
printf("Rotate and zooming is centered where you first left mouse click\n");
printf("Hold down Ctrl at left mouse click to JUST SCALE\n");
printf("Hold down Shift at left mouse click to JUST ROTATE\n");
printf("\n");
printf("Use middle mouse button to slide (translate)\n");
glutDisplayFunc(display);
glutReshapeFunc(reshape);
@ -293,14 +286,18 @@ int main(int argc, char **argv)
if (!glewIsSupported("GL_EXT_debug_marker"))
printf("GL_EXT_debug_marker is not supported.\n");
hasDSA = glewIsSupported("GL_EXT_direct_state_access");
if (!hasDSA) {
fatalError("OpenGL implementation doesn't support GL_EXT_direct_state_access (you should be using NVIDIA GPUs...)");
}
if (!glewIsSupported("GL_EXT_direct_state_access"))
fatalError("required GL_EXT_direct_state_access OpenGL extension is not present.");
if (!glewIsSupported("GL_NV_path_rendering")) {
fatalError("required NV_path_rendering OpenGL extension is not present");
}
if (!glewIsSupported("GL_NV_path_rendering"))
fatalError("required NV_path_rendering OpenGL extension is not present.");
printf("Use left mouse button to scale/zoom (vertical, up/down) and rotate (right=clockwise, left=ccw)\n");
printf("Rotate and zooming is centered where you first left mouse click\n");
printf("Hold down Ctrl at left mouse click to JUST SCALE\n");
printf("Hold down Shift at left mouse click to JUST ROTATE\n");
printf("\n");
printf("Use middle mouse button to slide (translate)\n");
initGraphics();

View file

@ -29335,6 +29335,50 @@ REGAL_DECL void REGAL_CALL glLogMessageCallbackREGAL(GLLOGPROCREGAL callback);
REGAL_DECL void REGAL_CALL plugin_glLogMessageCallbackREGAL(GLLOGPROCREGAL callback);
#endif
/**
** GL_REGAL_proc_address
**/
#if (defined(GL_REGAL_PROC_ADDRESS) || defined(REGAL_NO_ENUM) || defined(REGAL_NO_GL_REGAL_PROC_ADDRESS)) && !defined(REGAL_NO_ENUM_GL_REGAL_PROC_ADDRESS)
#define REGAL_NO_ENUM_GL_REGAL_PROC_ADDRESS
#endif
#if (defined(GL_REGAL_PROC_ADDRESS) || defined(REGAL_NO_TYPEDEF) || defined(REGAL_NO_GL_REGAL_PROC_ADDRESS)) && !defined(REGAL_NO_TYPEDEF_GL_REGAL_PROC_ADDRESS)
#define REGAL_NO_TYPEDEF_GL_REGAL_PROC_ADDRESS
#endif
#if (defined(GL_REGAL_PROC_ADDRESS) || !defined(REGAL_NAMESPACE) || defined(REGAL_NO_GL_REGAL_PROC_ADDRESS)) && !defined(REGAL_NO_NAMESPACE_GL_REGAL_PROC_ADDRESS)
#define REGAL_NO_NAMESPACE_GL_REGAL_PROC_ADDRESS
#endif
#if (defined(GL_REGAL_PROC_ADDRESS) || !defined(REGAL_PLUGIN_MODE) || defined(REGAL_NO_GL_REGAL_PROC_ADDRESS)) && !defined(REGAL_NO_PLUGIN_GL_REGAL_PROC_ADDRESS)
#define REGAL_NO_PLUGIN_GL_REGAL_PROC_ADDRESS
#endif
#if (defined(GL_REGAL_PROC_ADDRESS) || defined(REGAL_NO_DECLARATION) || defined(REGAL_NO_GL_REGAL_PROC_ADDRESS)) && !defined(REGAL_NO_DECLARATION_GL_REGAL_PROC_ADDRESS)
#define REGAL_NO_DECLARATION_GL_REGAL_PROC_ADDRESS
#endif
#ifndef GL_REGAL_proc_address
#define GL_REGAL_proc_address 1
#endif
#ifndef REGAL_NO_TYPEDEF_GL_REGAL_PROC_ADDRESS
typedef void *(REGAL_CALL *PFNGLGETPROCADDRESSREGALPROC)(const GLchar *name);
#endif
#ifndef REGAL_NO_NAMESPACE_GL_REGAL_PROC_ADDRESS
#define glGetProcAddressREGAL rglGetProcAddressREGAL
#endif
#ifndef REGAL_NO_DECLARATION_GL_REGAL_PROC_ADDRESS
REGAL_DECL void *REGAL_CALL glGetProcAddressREGAL(const GLchar *name);
#endif
#ifndef REGAL_NO_PLUGIN_GL_REGAL_PROC_ADDRESS
REGAL_DECL void *REGAL_CALL plugin_glGetProcAddressREGAL(const GLchar *name);
#endif
/**
** GL_REND_screen_coordinates
**/

File diff suppressed because it is too large Load diff

42
scripts/EmuProcAddress.py Normal file
View file

@ -0,0 +1,42 @@
#!/usr/bin/python -B
# Regal.cpp implementation of GL_REGAL_proc_address extension
formulae = {
'GetProcAddress' : {
'entries' : [ 'glGetProcAddressREGAL' ],
'impl' : '''
void *ret;
ret = Lookup::gl_Lookup<void *>(${arg0});
if (ret)
return ret;
#if REGAL_SYS_WGL
ret = Lookup::wgl_Lookup<void *>(${arg0});
if (ret)
return ret;
#endif
#if REGAL_SYS_GLX
ret = Lookup::glx_Lookup<void *>(${arg0});
if (ret)
return ret;
#endif
#if REGAL_SYS_EGL
ret = Lookup::egl_Lookup<void *>(${arg0});
if (ret)
return ret;
#endif
#if REGAL_SYS_OSX
ret = Lookup::cgl_Lookup<void *>(${arg0});
if (ret)
return ret;
#endif
return NULL;
'''
}
}

View file

@ -168,14 +168,16 @@ class Enum:
class Enumerant:
def __init__(self, name = '', value = '', category = ''):
def __init__(self, name = '', value = '', category = '', group = []):
self.name = name
self.value = value
self.version = ''
self.extension = ''
self.deprecated = ''
self.category = category
self.category = category # Usually the GL extension name
self.group = group # For grouping enums orthogonally to extensions
self.alias = []
self.public = True
class StateType:

View file

@ -101,6 +101,10 @@ defines = Enum('defines')
else:
print >>file, '0x%04x,'%(value),
print >>file, '\'%s\')'%(j.category)
if len(j.group):
print >>file, '%s.group = [\'%s\']'%(j.name,'\',\''.join(j.group))
if len(j.alias):
print >>file, '%s.alias = [\'%s\']'%(j.name,'\',\''.join(j.alias))
# if len(j.extension):
# print >>file, '%s.extension = \'%s\''%(j.name,j.extension)
if getattr(j,'esVersions',None) != None:

View file

@ -247,6 +247,7 @@ GL_BLUE_BITS = Enumerant('GL_BLUE_BITS', 0x0d54, 'GL_VERSION_1_1')
GL_BLUE_BITS.esVersions = [2.0]
GL_BLUE_SCALE = Enumerant('GL_BLUE_SCALE', 0x0d1a, 'GL_VERSION_1_1')
GL_BYTE = Enumerant('GL_BYTE', 0x1400, 'GL_VERSION_1_1')
GL_BYTE.group = ['pathCoord']
GL_BYTE.esVersions = [2.0]
GL_C3F_V3F = Enumerant('GL_C3F_V3F', 0x2a24, 'GL_VERSION_1_1')
GL_C4F_N3F_V3F = Enumerant('GL_C4F_N3F_V3F', 0x2a26, 'GL_VERSION_1_1')
@ -377,6 +378,7 @@ GL_FEEDBACK_BUFFER_TYPE = Enumerant('GL_FEEDBACK_BUFFER_TYPE', 0x0df2, 'GL_VERSI
GL_FILL = Enumerant('GL_FILL', 0x1b02, 'GL_VERSION_1_1')
GL_FLAT = Enumerant('GL_FLAT', 0x1d00, 'GL_VERSION_1_1')
GL_FLOAT = Enumerant('GL_FLOAT', 0x1406, 'GL_VERSION_1_1')
GL_FLOAT.group = ['pathCoord']
GL_FLOAT.esVersions = [2.0]
GL_FOG = Enumerant('GL_FOG', 0x0b60, 'GL_VERSION_1_1')
GL_FOG_BIT = Enumerant('GL_FOG_BIT', 0x0080, 'GL_VERSION_1_1')
@ -721,6 +723,7 @@ GL_SET = Enumerant('GL_SET', 0x150f, 'GL_VERSION_1_1')
GL_SHADE_MODEL = Enumerant('GL_SHADE_MODEL', 0x0b54, 'GL_VERSION_1_1')
GL_SHININESS = Enumerant('GL_SHININESS', 0x1601, 'GL_VERSION_1_1')
GL_SHORT = Enumerant('GL_SHORT', 0x1402, 'GL_VERSION_1_1')
GL_SHORT.group = ['pathCoord']
GL_SHORT.esVersions = [2.0]
GL_SMOOTH = Enumerant('GL_SMOOTH', 0x1d01, 'GL_VERSION_1_1')
GL_SPECULAR = Enumerant('GL_SPECULAR', 0x1202, 'GL_VERSION_1_1')
@ -840,10 +843,12 @@ GL_UNPACK_SKIP_PIXELS = Enumerant('GL_UNPACK_SKIP_PIXELS', 0x0cf4, 'GL_VERSION_1
GL_UNPACK_SKIP_ROWS = Enumerant('GL_UNPACK_SKIP_ROWS', 0x0cf3, 'GL_VERSION_1_1')
GL_UNPACK_SWAP_BYTES = Enumerant('GL_UNPACK_SWAP_BYTES', 0x0cf0, 'GL_VERSION_1_1')
GL_UNSIGNED_BYTE = Enumerant('GL_UNSIGNED_BYTE', 0x1401, 'GL_VERSION_1_1')
GL_UNSIGNED_BYTE.group = ['pathCoord']
GL_UNSIGNED_BYTE.esVersions = [2.0]
GL_UNSIGNED_INT = Enumerant('GL_UNSIGNED_INT', 0x1405, 'GL_VERSION_1_1')
GL_UNSIGNED_INT.esVersions = [2.0]
GL_UNSIGNED_SHORT = Enumerant('GL_UNSIGNED_SHORT', 0x1403, 'GL_VERSION_1_1')
GL_UNSIGNED_SHORT.group = ['pathCoord']
GL_UNSIGNED_SHORT.esVersions = [2.0]
GL_V2F = Enumerant('GL_V2F', 0x2a20, 'GL_VERSION_1_1')
GL_V3F = Enumerant('GL_V3F', 0x2a21, 'GL_VERSION_1_1')
@ -9653,20 +9658,31 @@ GL_ADJACENT_PAIRS_NV = Enumerant('GL_ADJACENT_PAIRS_NV', 0x90ae, 'GL_NV_path_ren
GL_AFFINE_2D_NV = Enumerant('GL_AFFINE_2D_NV', 0x9092, 'GL_NV_path_rendering')
GL_AFFINE_3D_NV = Enumerant('GL_AFFINE_3D_NV', 0x9094, 'GL_NV_path_rendering')
GL_ARC_TO_NV = Enumerant('GL_ARC_TO_NV', 0x00fe, 'GL_NV_path_rendering')
GL_ARC_TO_NV.group = ['pathCommand']
GL_ARC_TO_NV.alias = ['A']
GL_BEVEL_NV = Enumerant('GL_BEVEL_NV', 0x90a6, 'GL_NV_path_rendering')
GL_BOLD_BIT_NV = Enumerant('GL_BOLD_BIT_NV', 0x0001, 'GL_NV_path_rendering')
GL_BOUNDING_BOX_NV = Enumerant('GL_BOUNDING_BOX_NV', 0x908d, 'GL_NV_path_rendering')
GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV = Enumerant('GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV', 0x909c, 'GL_NV_path_rendering')
GL_CIRCULAR_CCW_ARC_TO_NV = Enumerant('GL_CIRCULAR_CCW_ARC_TO_NV', 0x00f8, 'GL_NV_path_rendering')
GL_CIRCULAR_CCW_ARC_TO_NV.group = ['pathCommand']
GL_CIRCULAR_CW_ARC_TO_NV = Enumerant('GL_CIRCULAR_CW_ARC_TO_NV', 0x00fa, 'GL_NV_path_rendering')
GL_CIRCULAR_CW_ARC_TO_NV.group = ['pathCommand']
GL_CIRCULAR_TANGENT_ARC_TO_NV = Enumerant('GL_CIRCULAR_TANGENT_ARC_TO_NV', 0x00fc, 'GL_NV_path_rendering')
GL_CIRCULAR_TANGENT_ARC_TO_NV.group = ['pathCommand']
GL_CLOSE_PATH_NV = Enumerant('GL_CLOSE_PATH_NV', 0x0000, 'GL_NV_path_rendering')
GL_CLOSE_PATH_NV.group = ['pathCommand']
GL_CLOSE_PATH_NV.alias = ['z','Z']
GL_CONVEX_HULL_NV = Enumerant('GL_CONVEX_HULL_NV', 0x908b, 'GL_NV_path_rendering')
GL_COUNT_DOWN_NV = Enumerant('GL_COUNT_DOWN_NV', 0x9089, 'GL_NV_path_rendering')
GL_COUNT_UP_NV = Enumerant('GL_COUNT_UP_NV', 0x9088, 'GL_NV_path_rendering')
GL_CUBIC_CURVE_TO_NV = Enumerant('GL_CUBIC_CURVE_TO_NV', 0x000c, 'GL_NV_path_rendering')
GL_CUBIC_CURVE_TO_NV.group = ['pathCommand']
GL_CUBIC_CURVE_TO_NV.alias = ['C']
GL_DUP_FIRST_CUBIC_CURVE_TO_NV = Enumerant('GL_DUP_FIRST_CUBIC_CURVE_TO_NV', 0x00f2, 'GL_NV_path_rendering')
GL_DUP_FIRST_CUBIC_CURVE_TO_NV.group = ['pathCommand']
GL_DUP_LAST_CUBIC_CURVE_TO_NV = Enumerant('GL_DUP_LAST_CUBIC_CURVE_TO_NV', 0x00f4, 'GL_NV_path_rendering')
GL_DUP_LAST_CUBIC_CURVE_TO_NV.group = ['pathCommand']
GL_FILE_NAME_NV = Enumerant('GL_FILE_NAME_NV', 0x9074, 'GL_NV_path_rendering')
GL_FIRST_TO_REST_NV = Enumerant('GL_FIRST_TO_REST_NV', 0x90af, 'GL_NV_path_rendering')
GL_FONT_ASCENDER_BIT_NV = Enumerant('GL_FONT_ASCENDER_BIT_NV', 0x200000, 'GL_NV_path_rendering')
@ -9692,14 +9708,22 @@ GL_GLYPH_VERTICAL_BEARING_X_BIT_NV = Enumerant('GL_GLYPH_VERTICAL_BEARING_X_BIT_
GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV = Enumerant('GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV', 0x0040, 'GL_NV_path_rendering')
GL_GLYPH_WIDTH_BIT_NV = Enumerant('GL_GLYPH_WIDTH_BIT_NV', 0x0001, 'GL_NV_path_rendering')
GL_HORIZONTAL_LINE_TO_NV = Enumerant('GL_HORIZONTAL_LINE_TO_NV', 0x0006, 'GL_NV_path_rendering')
GL_HORIZONTAL_LINE_TO_NV.group = ['pathCommand']
GL_HORIZONTAL_LINE_TO_NV.alias = ['H']
GL_ITALIC_BIT_NV = Enumerant('GL_ITALIC_BIT_NV', 0x0002, 'GL_NV_path_rendering')
GL_LARGE_CCW_ARC_TO_NV = Enumerant('GL_LARGE_CCW_ARC_TO_NV', 0x0016, 'GL_NV_path_rendering')
GL_LARGE_CCW_ARC_TO_NV.group = ['pathCommand']
GL_LARGE_CW_ARC_TO_NV = Enumerant('GL_LARGE_CW_ARC_TO_NV', 0x0018, 'GL_NV_path_rendering')
GL_LARGE_CW_ARC_TO_NV.group = ['pathCommand']
GL_LINE_TO_NV = Enumerant('GL_LINE_TO_NV', 0x0004, 'GL_NV_path_rendering')
GL_LINE_TO_NV.group = ['pathCommand']
GL_LINE_TO_NV.alias = ['L']
GL_MITER_REVERT_NV = Enumerant('GL_MITER_REVERT_NV', 0x90a7, 'GL_NV_path_rendering')
GL_MITER_TRUNCATE_NV = Enumerant('GL_MITER_TRUNCATE_NV', 0x90a8, 'GL_NV_path_rendering')
GL_MOVE_TO_CONTINUES_NV = Enumerant('GL_MOVE_TO_CONTINUES_NV', 0x90b6, 'GL_NV_path_rendering')
GL_MOVE_TO_NV = Enumerant('GL_MOVE_TO_NV', 0x0002, 'GL_NV_path_rendering')
GL_MOVE_TO_NV.group = ['pathCommand']
GL_MOVE_TO_NV.alias = ['M']
GL_MOVE_TO_RESETS_NV = Enumerant('GL_MOVE_TO_RESETS_NV', 0x90b5, 'GL_NV_path_rendering')
GL_PATH_CLIENT_LENGTH_NV = Enumerant('GL_PATH_CLIENT_LENGTH_NV', 0x907f, 'GL_NV_path_rendering')
GL_PATH_COMMAND_COUNT_NV = Enumerant('GL_PATH_COMMAND_COUNT_NV', 0x909d, 'GL_NV_path_rendering')
@ -9740,27 +9764,59 @@ GL_PATH_STROKE_WIDTH_NV = Enumerant('GL_PATH_STROKE_WIDTH_NV', 0x9075, 'GL_NV_pa
GL_PATH_TERMINAL_DASH_CAP_NV = Enumerant('GL_PATH_TERMINAL_DASH_CAP_NV', 0x907d, 'GL_NV_path_rendering')
GL_PATH_TERMINAL_END_CAP_NV = Enumerant('GL_PATH_TERMINAL_END_CAP_NV', 0x9078, 'GL_NV_path_rendering')
GL_QUADRATIC_CURVE_TO_NV = Enumerant('GL_QUADRATIC_CURVE_TO_NV', 0x000a, 'GL_NV_path_rendering')
GL_QUADRATIC_CURVE_TO_NV.group = ['pathCommand']
GL_QUADRATIC_CURVE_TO_NV.alias = ['Q']
GL_RECT_NV = Enumerant('GL_RECT_NV', 0x00f6, 'GL_NV_path_rendering')
GL_RECT_NV.group = ['pathCommand']
GL_RELATIVE_ARC_TO_NV = Enumerant('GL_RELATIVE_ARC_TO_NV', 0x00ff, 'GL_NV_path_rendering')
GL_RELATIVE_ARC_TO_NV.group = ['pathCommand']
GL_RELATIVE_ARC_TO_NV.alias = ['a']
GL_RELATIVE_CUBIC_CURVE_TO_NV = Enumerant('GL_RELATIVE_CUBIC_CURVE_TO_NV', 0x000d, 'GL_NV_path_rendering')
GL_RELATIVE_CUBIC_CURVE_TO_NV.group = ['pathCommand']
GL_RELATIVE_CUBIC_CURVE_TO_NV.alias = ['c']
GL_RELATIVE_HORIZONTAL_LINE_TO_NV = Enumerant('GL_RELATIVE_HORIZONTAL_LINE_TO_NV', 0x0007, 'GL_NV_path_rendering')
GL_RELATIVE_HORIZONTAL_LINE_TO_NV.group = ['pathCommand']
GL_RELATIVE_HORIZONTAL_LINE_TO_NV.alias = ['h']
GL_RELATIVE_LARGE_CCW_ARC_TO_NV = Enumerant('GL_RELATIVE_LARGE_CCW_ARC_TO_NV', 0x0017, 'GL_NV_path_rendering')
GL_RELATIVE_LARGE_CCW_ARC_TO_NV.group = ['pathCommand']
GL_RELATIVE_LARGE_CW_ARC_TO_NV = Enumerant('GL_RELATIVE_LARGE_CW_ARC_TO_NV', 0x0019, 'GL_NV_path_rendering')
GL_RELATIVE_LARGE_CW_ARC_TO_NV.group = ['pathCommand']
GL_RELATIVE_LINE_TO_NV = Enumerant('GL_RELATIVE_LINE_TO_NV', 0x0005, 'GL_NV_path_rendering')
GL_RELATIVE_LINE_TO_NV.group = ['pathCommand']
GL_RELATIVE_LINE_TO_NV.alias = ['l']
GL_RELATIVE_MOVE_TO_NV = Enumerant('GL_RELATIVE_MOVE_TO_NV', 0x0003, 'GL_NV_path_rendering')
GL_RELATIVE_MOVE_TO_NV.group = ['pathCommand']
GL_RELATIVE_MOVE_TO_NV.alias = ['m']
GL_RELATIVE_QUADRATIC_CURVE_TO_NV = Enumerant('GL_RELATIVE_QUADRATIC_CURVE_TO_NV', 0x000b, 'GL_NV_path_rendering')
GL_RELATIVE_QUADRATIC_CURVE_TO_NV.group = ['pathCommand']
GL_RELATIVE_QUADRATIC_CURVE_TO_NV.alias = ['q']
GL_RELATIVE_SMALL_CCW_ARC_TO_NV = Enumerant('GL_RELATIVE_SMALL_CCW_ARC_TO_NV', 0x0013, 'GL_NV_path_rendering')
GL_RELATIVE_SMALL_CCW_ARC_TO_NV.group = ['pathCommand']
GL_RELATIVE_SMALL_CW_ARC_TO_NV = Enumerant('GL_RELATIVE_SMALL_CW_ARC_TO_NV', 0x0015, 'GL_NV_path_rendering')
GL_RELATIVE_SMALL_CW_ARC_TO_NV.group = ['pathCommand']
GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV = Enumerant('GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV', 0x0011, 'GL_NV_path_rendering')
GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV.group = ['pathCommand']
GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV.alias = ['s']
GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV = Enumerant('GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV', 0x000f, 'GL_NV_path_rendering')
GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV.group = ['pathCommand']
GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV.alias = ['t']
GL_RELATIVE_VERTICAL_LINE_TO_NV = Enumerant('GL_RELATIVE_VERTICAL_LINE_TO_NV', 0x0009, 'GL_NV_path_rendering')
GL_RELATIVE_VERTICAL_LINE_TO_NV.group = ['pathCommand']
GL_RELATIVE_VERTICAL_LINE_TO_NV.alias = ['v']
GL_RESTART_PATH_NV = Enumerant('GL_RESTART_PATH_NV', 0x00f0, 'GL_NV_path_rendering')
GL_RESTART_PATH_NV.group = ['pathCommand']
GL_ROUND_NV = Enumerant('GL_ROUND_NV', 0x90a4, 'GL_NV_path_rendering')
GL_SKIP_MISSING_GLYPH_NV = Enumerant('GL_SKIP_MISSING_GLYPH_NV', 0x90a9, 'GL_NV_path_rendering')
GL_SMALL_CCW_ARC_TO_NV = Enumerant('GL_SMALL_CCW_ARC_TO_NV', 0x0012, 'GL_NV_path_rendering')
GL_SMALL_CCW_ARC_TO_NV.group = ['pathCommand']
GL_SMALL_CW_ARC_TO_NV = Enumerant('GL_SMALL_CW_ARC_TO_NV', 0x0014, 'GL_NV_path_rendering')
GL_SMALL_CW_ARC_TO_NV.group = ['pathCommand']
GL_SMOOTH_CUBIC_CURVE_TO_NV = Enumerant('GL_SMOOTH_CUBIC_CURVE_TO_NV', 0x0010, 'GL_NV_path_rendering')
GL_SMOOTH_CUBIC_CURVE_TO_NV.group = ['pathCommand']
GL_SMOOTH_CUBIC_CURVE_TO_NV.alias = ['S']
GL_SMOOTH_QUADRATIC_CURVE_TO_NV = Enumerant('GL_SMOOTH_QUADRATIC_CURVE_TO_NV', 0x000e, 'GL_NV_path_rendering')
GL_SMOOTH_QUADRATIC_CURVE_TO_NV.group = ['pathCommand']
GL_SMOOTH_QUADRATIC_CURVE_TO_NV.alias = ['T']
GL_SQUARE_NV = Enumerant('GL_SQUARE_NV', 0x90a3, 'GL_NV_path_rendering')
GL_STANDARD_FONT_NAME_NV = Enumerant('GL_STANDARD_FONT_NAME_NV', 0x9072, 'GL_NV_path_rendering')
GL_SYSTEM_FONT_NAME_NV = Enumerant('GL_SYSTEM_FONT_NAME_NV', 0x9073, 'GL_NV_path_rendering')
@ -9775,6 +9831,8 @@ GL_USE_MISSING_GLYPH_NV = Enumerant('GL_USE_MISSING_GLYPH_NV', 0x90aa, 'GL_NV_pa
GL_UTF16_NV = Enumerant('GL_UTF16_NV', 0x909b, 'GL_NV_path_rendering')
GL_UTF8_NV = Enumerant('GL_UTF8_NV', 0x909a, 'GL_NV_path_rendering')
GL_VERTICAL_LINE_TO_NV = Enumerant('GL_VERTICAL_LINE_TO_NV', 0x0008, 'GL_NV_path_rendering')
GL_VERTICAL_LINE_TO_NV.group = ['pathCommand']
GL_VERTICAL_LINE_TO_NV.alias = ['V']
defines.add(GL_ACCUM_ADJACENT_PAIRS_NV)
defines.add(GL_ADJACENT_PAIRS_NV)
@ -37782,10 +37840,10 @@ glPathCommandsNV = Function('glPathCommandsNV')
glPathCommandsNV.ret = Return('void')
glPathCommandsNV.add( Input( 'path','GLuint' ))
glPathCommandsNV.add( Input( 'numCommands','GLsizei' ))
glPathCommandsNV.add( Input( 'commands','const GLubyte *' ))
glPathCommandsNV.add( Input( 'commands','const GLubyte *' ,regalLog = 'Token::GLpathCommandToString(numCommands,commands)' ))
glPathCommandsNV.add( Input( 'numCoords','GLsizei' ))
glPathCommandsNV.add( Input( 'coordType','GLenum' ))
glPathCommandsNV.add( Input( 'coords','const GLvoid *' ))
glPathCommandsNV.add( Input( 'coordType','GLenum' ,regalLog = 'Token::GLpathCoordToString(coordType)' ))
glPathCommandsNV.add( Input( 'coords','const GLvoid *' ,regalLog = 'Token::GLpathCoordToString(numCoords,coordType,coords)' ))
glPathCommandsNV.version = ''
glPathCommandsNV.category = 'GL_NV_path_rendering'
glPathCommandsNV.trace = True
@ -37951,10 +38009,10 @@ glPathSubCommandsNV.add( Input( 'path','GLuint' ))
glPathSubCommandsNV.add( Input( 'commandStart','GLsizei' ))
glPathSubCommandsNV.add( Input( 'commandsToDelete','GLsizei' ))
glPathSubCommandsNV.add( Input( 'numCommands','GLsizei' ))
glPathSubCommandsNV.add( Input( 'commands','const GLubyte *' ))
glPathSubCommandsNV.add( Input( 'commands','const GLubyte *' ,regalLog = 'Token::GLpathCommandToString(numCommands,commands)' ))
glPathSubCommandsNV.add( Input( 'numCoords','GLsizei' ))
glPathSubCommandsNV.add( Input( 'coordType','GLenum' ))
glPathSubCommandsNV.add( Input( 'coords','const GLvoid *' ))
glPathSubCommandsNV.add( Input( 'coordType','GLenum' ,regalLog = 'Token::GLpathCoordToString(coordType)' ))
glPathSubCommandsNV.add( Input( 'coords','const GLvoid *' ,regalLog = 'Token::GLpathCoordToString(numCoords,coordType,coords)' ))
glPathSubCommandsNV.version = ''
glPathSubCommandsNV.category = 'GL_NV_path_rendering'
glPathSubCommandsNV.trace = True
@ -37966,8 +38024,8 @@ glPathSubCoordsNV.ret = Return('void')
glPathSubCoordsNV.add( Input( 'path','GLuint' ))
glPathSubCoordsNV.add( Input( 'coordStart','GLsizei' ))
glPathSubCoordsNV.add( Input( 'numCoords','GLsizei' ))
glPathSubCoordsNV.add( Input( 'coordType','GLenum' ))
glPathSubCoordsNV.add( Input( 'coords','const GLvoid *' ))
glPathSubCoordsNV.add( Input( 'coordType','GLenum' ,regalLog = 'Token::GLpathCoordToString(coordType)' ))
glPathSubCoordsNV.add( Input( 'coords','const GLvoid *' ,regalLog = 'Token::GLpathCoordToString(numCoords,coordType,coords)' ))
glPathSubCoordsNV.version = ''
glPathSubCoordsNV.category = 'GL_NV_path_rendering'
glPathSubCoordsNV.trace = True
@ -41632,6 +41690,18 @@ glLogMessageCallbackREGAL.trace = True
glLogMessageCallbackREGAL.play = True
gl.add(glLogMessageCallbackREGAL)
# GL_REGAL_proc_address
glGetProcAddressREGAL = Function('glGetProcAddressREGAL')
glGetProcAddressREGAL.ret = Return('void *')
glGetProcAddressREGAL.add( Input( 'name','const GLchar *' ))
glGetProcAddressREGAL.version = '4.1'
glGetProcAddressREGAL.category = 'GL_REGAL_proc_address'
glGetProcAddressREGAL.regalOnly = True
glGetProcAddressREGAL.trace = True
glGetProcAddressREGAL.play = True
gl.add(glGetProcAddressREGAL)
# GL_SGIS_detail_texture
glDetailTexFuncSGIS = Function('glDetailTexFuncSGIS')

View file

@ -17,6 +17,7 @@ from EmuMarker import formulaeGlobal as markerFormulaeGlobal
from EmuFrame import formulae as frameFormulae
from EmuFrame import formulaeGlobal as frameFormulaeGlobal
from EmuExtensionQuery import formulae as extensionQueryFormulae
from EmuProcAddress import formulae as procAddressFormulae
from EmuErrorString import formulae as errorStringFormulae
from EmuEnable import formulae as enableFormulae
from EmuCache import formulaeGlobal as cacheFormulaeGlobal
@ -57,6 +58,7 @@ emuRegal = [
{ 'type' : 'Frame', 'include' : 'RegalFrame.h', 'member' : 'frame', 'conditional' : None, 'ifdef' : 'REGAL_FRAME', 'formulae' : frameFormulae },
{ 'type' : None, 'include' : None, 'member' : None, 'conditional' : None, 'ifdef' : 'REGAL_FRAME', 'formulae' : frameFormulaeGlobal },
{ 'type' : None, 'include' : None, 'member' : None, 'conditional' : None, 'ifdef' : None, 'formulae' : extensionQueryFormulae },
{ 'type' : None, 'include' : None, 'member' : None, 'conditional' : None, 'ifdef' : None, 'formulae' : procAddressFormulae },
{ 'type' : None, 'include' : None, 'member' : None, 'conditional' : None, 'ifdef' : None, 'formulae' : errorStringFormulae },
{ 'type' : None, 'include' : None, 'member' : None, 'conditional' : None, 'ifdef' : None, 'formulae' : logFormulae },
{ 'type' : None, 'include' : None, 'member' : None, 'conditional' : None, 'ifdef' : None, 'formulae' : enableFormulae },

View file

@ -184,6 +184,30 @@ namespace Token {
}
}
std::string GLpathCommandToString(GLuint num, const GLubyte *v)
{
std::vector<const char *> tmp(num);
for (GLuint i=0; i<num; ++i)
tmp[i] = GLpathCommandToString(v[i]);
return boost::print::print_string(boost::print::iterator(tmp.begin(),tmp.end()));
}
std::string GLpathCoordToString (GLuint num, GLenum t, const void *v)
{
switch (t)
{
case GL_BYTE: return boost::print::print_string(boost::print::array(reinterpret_cast<const GLbyte *>(v),num));
case GL_UNSIGNED_BYTE: return boost::print::print_string(boost::print::array(reinterpret_cast<const GLubyte *>(v),num));
case GL_SHORT: return boost::print::print_string(boost::print::array(reinterpret_cast<const GLshort *>(v),num));
case GL_UNSIGNED_SHORT: return boost::print::print_string(boost::print::array(reinterpret_cast<const GLushort *>(v),num));
case GL_FLOAT: return boost::print::print_string(boost::print::array(reinterpret_cast<const GLfloat *>(v),num));
default:
break;
}
return std::string();
}
std::string GLblitFramebufferToString(GLbitfield v)
{
const GLbitfield other = v & ~(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
@ -697,7 +721,7 @@ def filterTokens(tokens):
def suffixCompare(i,j):
# Prefer anything to _BIT, _BITS
# Prefer anything to _BIT, _BITS, etc
im = [ 1 for k in suffixes2 if i.endswith(k) ]
jm = [ 1 for k in suffixes2 if j.endswith(k) ]
@ -753,6 +777,33 @@ def filterTokens(tokens):
return [ (tokens[i][0], u[i][1], tokens[i][1]) for i in xrange(len(tokens)) ]
def groupToStringCodeGen(apis, group, name, default = 'NULL', type = 'GLenum', format = '0x%04x'):
tmp = []
tmp.append('')
tmp.append(' const char * %s( %s v ) {'%(name,type))
tmp.append(' #if REGAL_ENUM_TO_STRING')
tmp.append(' switch( v ) {')
for i in apis:
if i.name != 'gl':
continue
for j in i.enums:
if j.name != 'defines':
continue
enums = [k for k in j.enumerantsByName if group in k.group ]
enums = sorted(enums,key=lambda k : k.value)
for k in enums:
for l in k.alias:
tmp.append(' case \'%s\':'%(l))
tmp.append(' case %s: return "%s";'%(hexValue(k.value,format),k.name))
tmp.append(' default: break;')
tmp.append(' }')
tmp.append(' #endif // REGAL_ENUM_TO_STRING')
tmp.append(' return "%s";'%(default))
tmp.append(' }')
return tmp
def generateTokenSource(apis, args):
code = []
@ -799,6 +850,11 @@ def generateTokenSource(apis, args):
code.append(' return "unknown_gl_enum";')
code.append(' }')
# NV_path_rendering related
code.extend(groupToStringCodeGen(apis,'pathCoord', 'GLpathCoordToString', 'unknown'))
code.extend(groupToStringCodeGen(apis,'pathCommand', 'GLpathCommandToString', 'unknown', 'GLubyte', '0x%02x'))
# GLerrorToString
code.append('')
@ -946,6 +1002,12 @@ namespace Token {
std::string GLtextureToString (GLenum v); // GL_TEXTUREi or 0xaaaa
std::string GLmodeToString (GLenum v); // GL_PRIMITIVE or 0xaaaa
const char * GLpathCommandToString (GLubyte v); // glPathCommandsNV etc
std::string GLpathCommandToString (GLuint num, const GLubyte *v); // glPathCommandsNV etc
const char * GLpathCoordToString (GLenum v); // glPathCommandsNV etc
std::string GLpathCoordToString (GLuint num, GLenum t, const void *v); // glPathCommandsNV etc
// Bitfield strings
std::string GLblitFramebufferToString (GLbitfield v);

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2012 NVIDIA Corporation
* Copyright (c) 2010-2012 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2012 NVIDIA Corporation
* Copyright (c) 2010-2012 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

View file

@ -1,154 +0,0 @@
/* Copyright 2010 Nigel T Stewart, Nvidia Corporation
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*
* See http://www.boost.org/libs/print for library home page.
*
* boost::print is a library for string conversion.
*/
#ifndef BOOST_PRINT_DETAIL_HPP
#define BOOST_PRINT_DETAIL_HPP
#if defined(_MSC_VER) && (_MSC_VER>=1200)
#pragma once
#endif
#include <cstddef> // diffptr_t, size_t
#include <cassert> // assert
//
// boost::print::detail namespace for internal implementation purposes
//
namespace boost { namespace print { namespace detail {
using std::size_t;
// Formatting types for binary and hex output
template<typename T> struct binaryFormat { binaryFormat(const T &val) : _val(val) {} const T &_val; };
template<typename T> struct hexFormat { hexFormat (const T &val) : _val(val) {} const T &_val; };
// Determine the number of digits of an unsigned integer
// Use binary search to minimise comparisons.
template<typename T>
inline size_t unsigned_length(T val)
{
switch (sizeof(T)) {
// 8-bit unsigned integer
case 1:
return val<10 ? 1 : (val<100 ? 2 : 3);
// 16-bit unsigned integer
case 2: {
if (val<1000)
return val<10 ? 1 : (val<100 ? 2 : 3);
else
return val<10000 ? 4 : 5;
}
// 32-bit unsigned integer
case 4: {
if (val<10000)
return val<100 ? (val<10 ? 1 : 2) : (val<1000 ? 3 : 4);
else
return val<10000000 ?
( val < 100000 ? 5 : (val<1000000 ? 6 : 7)) :
( val < 100000000 ? 8 : (val<1000000000 ? 9 : 10));
}
// 64-bit unsigned integer
default:
// compile-time assertion?
assert(0);
return 0;
}
}
// Determine the number of digits of a signed integer
template<typename U, typename S>
inline size_t signed_length(S val)
{
const bool negative = val<0;
if (negative)
val = -val;
return unsigned_length(static_cast<U>(val)) + (negative ? 1 : 0);
}
// Output unsigned integer
template<typename Iterator, typename T>
inline void write_unsigned(Iterator &i, T val)
{
if (val==0) {
*i = '0';
++i;
return;
}
const size_t len = unsigned_length(val);
i += len;
while (val) {
--i;
*i = '0' + (val%10);
val /= 10;
}
i += len;
}
// Output signed integer
// Corresponding unsigned type U needs to be specified
template<typename U, typename Iterator, typename S>
inline void write_signed(Iterator &i, S val)
{
if (val<0) {
*i = '-';
++i;
val = -val;
}
write_unsigned(i,static_cast<U>(val));
}
// Output string of binary zeros and ones
template<typename Iterator> inline
void write_binary(Iterator &i, const size_t &val, const size_t n)
{
for (size_t j=0; j<n; ++j, ++i)
*i = val & (1<<(n-1-j)) ? '1' : '0';
}
// Output string of hexadecimal 0123456789ABCDEF digits
template<typename Iterator> inline
void write_hex(Iterator &i, const size_t &val, const size_t n)
{
for (size_t j=0; j<n; ++j, ++i)
{
const size_t hex = (val>>((n-1-j)<<2))&15;
*i = hex<10 ? '0' + hex : 'A' + hex - 10;
}
}
// Write characters from a [begin,end) iterator pair
// For example: std::string::begin(), std::string::end()
template<typename Iterator, typename ConstInputIterator>
inline void write_iterator(Iterator &i, const ConstInputIterator &begin, const ConstInputIterator &end)
{
for (ConstInputIterator j=begin; j!=end; ++i,++j)
*i = *j;
}
}}}
#endif

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2012 NVIDIA Corporation
* Copyright (c) 2010-2012 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2012 NVIDIA Corporation
* Copyright (c) 2010-2012 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2012 NVIDIA Corporation
* Copyright (c) 2010-2012 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2012 NVIDIA Corporation
* Copyright (c) 2010-2012 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2013 NVIDIA Corporation
* Copyright (c) 2010-2013 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2012 NVIDIA Corporation
* Copyright (c) 2010-2012 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2012 NVIDIA Corporation
* Copyright (c) 2010-2012 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2012 NVIDIA Corporation
* Copyright (c) 2010-2012 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2012 NVIDIA Corporation
* Copyright (c) 2010-2012 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2012 NVIDIA Corporation
* Copyright (c) 2010-2012 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2012 NVIDIA Corporation
* Copyright (c) 2010-2012 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2012 NVIDIA Corporation
* Copyright (c) 2010-2012 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2012 NVIDIA Corporation
* Copyright (c) 2010-2012 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

View file

@ -1,6 +1,6 @@
/*
* Copyright (c) 2010-2012 NVIDIA Corporation
* Copyright (c) 2010-2012 Nigel Stewart
* Copyright (c) 2010-2014 NVIDIA Corporation
* Copyright (c) 2010-2014 Nigel Stewart
* All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0.

File diff suppressed because it is too large Load diff

View file

@ -67,7 +67,23 @@
# define GLXEW_CONTEXT_ARG_DEF_LIST void
#endif /* GLEW_MX */
#if defined(__sgi) || defined (__sun) || defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
#if defined(GLEW_REGAL)
/* In GLEW_REGAL mode we call direcly into the linked
libRegal.so glGetProcAddressREGAL for looking up
the GL function pointers. */
# undef glGetProcAddressREGAL
# ifdef WIN32
extern void * __stdcall glGetProcAddressREGAL(const GLchar *name);
static void * (__stdcall * regalGetProcAddress) (const GLchar *) = glGetProcAddressREGAL;
# else
extern void * glGetProcAddressREGAL(const GLchar *name);
static void * (*regalGetProcAddress) (const GLchar *) = glGetProcAddressREGAL;
# endif
# define glGetProcAddressREGAL GLEW_GET_FUN(__glewGetProcAddressREGAL)
#elif defined(__sgi) || defined (__sun) || defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
#include <dlfcn.h>
#include <stdio.h>
#include <stdlib.h>
@ -105,11 +121,7 @@ void* NSGLGetProcAddress (const GLubyte *name)
void* addr;
if (NULL == image)
{
#ifdef GLEW_REGAL
image = dlopen("libRegal.dylib", RTLD_LAZY);
#else
image = dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", RTLD_LAZY);
#endif
}
if( !image ) return NULL;
addr = dlsym(image, (const char*)name);
@ -131,11 +143,7 @@ void* NSGLGetProcAddress (const GLubyte *name)
char* symbolName;
if (NULL == image)
{
#ifdef GLEW_REGAL
image = NSAddImage("libRegal.dylib", NSADDIMAGE_OPTION_RETURN_ON_ERROR);
#else
image = NSAddImage("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", NSADDIMAGE_OPTION_RETURN_ON_ERROR);
#endif
}
/* prepend a '_' for the Unix C symbol mangling convention */
symbolName = malloc(strlen((const char*)name) + 2);
@ -159,7 +167,9 @@ void* NSGLGetProcAddress (const GLubyte *name)
/*
* Define glewGetProcAddress.
*/
#if defined(_WIN32)
#if defined(GLEW_REGAL)
# define glewGetProcAddress(name) regalGetProcAddress((const GLchar *) name)
#elif defined(_WIN32)
# define glewGetProcAddress(name) wglGetProcAddress((LPCSTR)name)
#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
# define glewGetProcAddress(name) NSGLGetProcAddress(name)
@ -2050,6 +2060,17 @@ PFNGLNORMALPOINTERVINTELPROC __glewNormalPointervINTEL = NULL;
PFNGLTEXCOORDPOINTERVINTELPROC __glewTexCoordPointervINTEL = NULL;
PFNGLVERTEXPOINTERVINTELPROC __glewVertexPointervINTEL = NULL;
PFNGLBEGINPERFQUERYINTELPROC __glewBeginPerfQueryINTEL = NULL;
PFNGLCREATEPERFQUERYINTELPROC __glewCreatePerfQueryINTEL = NULL;
PFNGLDELETEPERFQUERYINTELPROC __glewDeletePerfQueryINTEL = NULL;
PFNGLENDPERFQUERYINTELPROC __glewEndPerfQueryINTEL = NULL;
PFNGLGETFIRSTPERFQUERYIDINTELPROC __glewGetFirstPerfQueryIdINTEL = NULL;
PFNGLGETNEXTPERFQUERYIDINTELPROC __glewGetNextPerfQueryIdINTEL = NULL;
PFNGLGETPERFCOUNTERINFOINTELPROC __glewGetPerfCounterInfoINTEL = NULL;
PFNGLGETPERFQUERYDATAINTELPROC __glewGetPerfQueryDataINTEL = NULL;
PFNGLGETPERFQUERYIDBYNAMEINTELPROC __glewGetPerfQueryIdByNameINTEL = NULL;
PFNGLGETPERFQUERYINFOINTELPROC __glewGetPerfQueryInfoINTEL = NULL;
PFNGLTEXSCISSORFUNCINTELPROC __glewTexScissorFuncINTEL = NULL;
PFNGLTEXSCISSORINTELPROC __glewTexScissorINTEL = NULL;
@ -2582,6 +2603,8 @@ PFNGLISSUPPORTEDREGALPROC __glewIsSupportedREGAL = NULL;
PFNGLLOGMESSAGECALLBACKREGALPROC __glewLogMessageCallbackREGAL = NULL;
PFNGLGETPROCADDRESSREGALPROC __glewGetProcAddressREGAL = NULL;
PFNGLDETAILTEXFUNCSGISPROC __glewDetailTexFuncSGIS = NULL;
PFNGLGETDETAILTEXFUNCSGISPROC __glewGetDetailTexFuncSGIS = NULL;
@ -2754,6 +2777,7 @@ GLboolean __GLEW_AMD_sample_positions = GL_FALSE;
GLboolean __GLEW_AMD_seamless_cubemap_per_texture = GL_FALSE;
GLboolean __GLEW_AMD_shader_atomic_counter_ops = GL_FALSE;
GLboolean __GLEW_AMD_shader_stencil_export = GL_FALSE;
GLboolean __GLEW_AMD_shader_stencil_value_export = GL_FALSE;
GLboolean __GLEW_AMD_shader_trinary_minmax = GL_FALSE;
GLboolean __GLEW_AMD_sparse_texture = GL_FALSE;
GLboolean __GLEW_AMD_stencil_operation_extended = GL_FALSE;
@ -3074,6 +3098,7 @@ GLboolean __GLEW_INGR_interlace_read = GL_FALSE;
GLboolean __GLEW_INTEL_fragment_shader_ordering = GL_FALSE;
GLboolean __GLEW_INTEL_map_texture = GL_FALSE;
GLboolean __GLEW_INTEL_parallel_arrays = GL_FALSE;
GLboolean __GLEW_INTEL_performance_query = GL_FALSE;
GLboolean __GLEW_INTEL_texture_scissor = GL_FALSE;
GLboolean __GLEW_KHR_debug = GL_FALSE;
GLboolean __GLEW_KHR_texture_compression_astc_hdr = GL_FALSE;
@ -3177,6 +3202,7 @@ GLboolean __GLEW_REGAL_enable = GL_FALSE;
GLboolean __GLEW_REGAL_error_string = GL_FALSE;
GLboolean __GLEW_REGAL_extension_query = GL_FALSE;
GLboolean __GLEW_REGAL_log = GL_FALSE;
GLboolean __GLEW_REGAL_proc_address = GL_FALSE;
GLboolean __GLEW_REND_screen_coordinates = GL_FALSE;
GLboolean __GLEW_S3_s3tc = GL_FALSE;
GLboolean __GLEW_SGIS_color_range = GL_FALSE;
@ -3853,6 +3879,10 @@ static GLboolean _glewInit_GL_AMD_sample_positions (GLEW_CONTEXT_ARG_DEF_INIT)
#endif /* GL_AMD_shader_stencil_export */
#ifdef GL_AMD_shader_stencil_value_export
#endif /* GL_AMD_shader_stencil_value_export */
#ifdef GL_AMD_shader_trinary_minmax
#endif /* GL_AMD_shader_trinary_minmax */
@ -7719,6 +7749,28 @@ static GLboolean _glewInit_GL_INTEL_parallel_arrays (GLEW_CONTEXT_ARG_DEF_INIT)
#endif /* GL_INTEL_parallel_arrays */
#ifdef GL_INTEL_performance_query
static GLboolean _glewInit_GL_INTEL_performance_query (GLEW_CONTEXT_ARG_DEF_INIT)
{
GLboolean r = GL_FALSE;
r = ((glBeginPerfQueryINTEL = (PFNGLBEGINPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)"glBeginPerfQueryINTEL")) == NULL) || r;
r = ((glCreatePerfQueryINTEL = (PFNGLCREATEPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)"glCreatePerfQueryINTEL")) == NULL) || r;
r = ((glDeletePerfQueryINTEL = (PFNGLDELETEPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)"glDeletePerfQueryINTEL")) == NULL) || r;
r = ((glEndPerfQueryINTEL = (PFNGLENDPERFQUERYINTELPROC)glewGetProcAddress((const GLubyte*)"glEndPerfQueryINTEL")) == NULL) || r;
r = ((glGetFirstPerfQueryIdINTEL = (PFNGLGETFIRSTPERFQUERYIDINTELPROC)glewGetProcAddress((const GLubyte*)"glGetFirstPerfQueryIdINTEL")) == NULL) || r;
r = ((glGetNextPerfQueryIdINTEL = (PFNGLGETNEXTPERFQUERYIDINTELPROC)glewGetProcAddress((const GLubyte*)"glGetNextPerfQueryIdINTEL")) == NULL) || r;
r = ((glGetPerfCounterInfoINTEL = (PFNGLGETPERFCOUNTERINFOINTELPROC)glewGetProcAddress((const GLubyte*)"glGetPerfCounterInfoINTEL")) == NULL) || r;
r = ((glGetPerfQueryDataINTEL = (PFNGLGETPERFQUERYDATAINTELPROC)glewGetProcAddress((const GLubyte*)"glGetPerfQueryDataINTEL")) == NULL) || r;
r = ((glGetPerfQueryIdByNameINTEL = (PFNGLGETPERFQUERYIDBYNAMEINTELPROC)glewGetProcAddress((const GLubyte*)"glGetPerfQueryIdByNameINTEL")) == NULL) || r;
r = ((glGetPerfQueryInfoINTEL = (PFNGLGETPERFQUERYINFOINTELPROC)glewGetProcAddress((const GLubyte*)"glGetPerfQueryInfoINTEL")) == NULL) || r;
return r;
}
#endif /* GL_INTEL_performance_query */
#ifdef GL_INTEL_texture_scissor
static GLboolean _glewInit_GL_INTEL_texture_scissor (GLEW_CONTEXT_ARG_DEF_INIT)
@ -8999,6 +9051,19 @@ static GLboolean _glewInit_GL_REGAL_log (GLEW_CONTEXT_ARG_DEF_INIT)
#endif /* GL_REGAL_log */
#ifdef GL_REGAL_proc_address
static GLboolean _glewInit_GL_REGAL_proc_address (GLEW_CONTEXT_ARG_DEF_INIT)
{
GLboolean r = GL_FALSE;
r = ((glGetProcAddressREGAL = (PFNGLGETPROCADDRESSREGALPROC)glewGetProcAddress((const GLubyte*)"glGetProcAddressREGAL")) == NULL) || r;
return r;
}
#endif /* GL_REGAL_proc_address */
#ifdef GL_REND_screen_coordinates
#endif /* GL_REND_screen_coordinates */
@ -9714,6 +9779,9 @@ GLenum GLEWAPIENTRY glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
#ifdef GL_AMD_shader_stencil_export
CONST_CAST(GLEW_AMD_shader_stencil_export) = _glewSearchExtension("GL_AMD_shader_stencil_export", extStart, extEnd);
#endif /* GL_AMD_shader_stencil_export */
#ifdef GL_AMD_shader_stencil_value_export
CONST_CAST(GLEW_AMD_shader_stencil_value_export) = _glewSearchExtension("GL_AMD_shader_stencil_value_export", extStart, extEnd);
#endif /* GL_AMD_shader_stencil_value_export */
#ifdef GL_AMD_shader_trinary_minmax
CONST_CAST(GLEW_AMD_shader_trinary_minmax) = _glewSearchExtension("GL_AMD_shader_trinary_minmax", extStart, extEnd);
#endif /* GL_AMD_shader_trinary_minmax */
@ -10838,6 +10906,10 @@ GLenum GLEWAPIENTRY glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
CONST_CAST(GLEW_INTEL_parallel_arrays) = _glewSearchExtension("GL_INTEL_parallel_arrays", extStart, extEnd);
if (glewExperimental || GLEW_INTEL_parallel_arrays) CONST_CAST(GLEW_INTEL_parallel_arrays) = !_glewInit_GL_INTEL_parallel_arrays(GLEW_CONTEXT_ARG_VAR_INIT);
#endif /* GL_INTEL_parallel_arrays */
#ifdef GL_INTEL_performance_query
CONST_CAST(GLEW_INTEL_performance_query) = _glewSearchExtension("GL_INTEL_performance_query", extStart, extEnd);
if (glewExperimental || GLEW_INTEL_performance_query) CONST_CAST(GLEW_INTEL_performance_query) = !_glewInit_GL_INTEL_performance_query(GLEW_CONTEXT_ARG_VAR_INIT);
#endif /* GL_INTEL_performance_query */
#ifdef GL_INTEL_texture_scissor
CONST_CAST(GLEW_INTEL_texture_scissor) = _glewSearchExtension("GL_INTEL_texture_scissor", extStart, extEnd);
if (glewExperimental || GLEW_INTEL_texture_scissor) CONST_CAST(GLEW_INTEL_texture_scissor) = !_glewInit_GL_INTEL_texture_scissor(GLEW_CONTEXT_ARG_VAR_INIT);
@ -11195,6 +11267,10 @@ GLenum GLEWAPIENTRY glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
CONST_CAST(GLEW_REGAL_log) = _glewSearchExtension("GL_REGAL_log", extStart, extEnd);
if (glewExperimental || GLEW_REGAL_log) CONST_CAST(GLEW_REGAL_log) = !_glewInit_GL_REGAL_log(GLEW_CONTEXT_ARG_VAR_INIT);
#endif /* GL_REGAL_log */
#ifdef GL_REGAL_proc_address
CONST_CAST(GLEW_REGAL_proc_address) = _glewSearchExtension("GL_REGAL_proc_address", extStart, extEnd);
if (glewExperimental || GLEW_REGAL_proc_address) CONST_CAST(GLEW_REGAL_proc_address) = !_glewInit_GL_REGAL_proc_address(GLEW_CONTEXT_ARG_VAR_INIT);
#endif /* GL_REGAL_proc_address */
#ifdef GL_REND_screen_coordinates
CONST_CAST(GLEW_REND_screen_coordinates) = _glewSearchExtension("GL_REND_screen_coordinates", extStart, extEnd);
#endif /* GL_REND_screen_coordinates */
@ -13864,6 +13940,13 @@ GLboolean GLEWAPIENTRY glewIsSupported (const char* name)
continue;
}
#endif
#ifdef GL_AMD_shader_stencil_value_export
if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_stencil_value_export", 27))
{
ret = GLEW_AMD_shader_stencil_value_export;
continue;
}
#endif
#ifdef GL_AMD_shader_trinary_minmax
if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_trinary_minmax", 21))
{
@ -16137,6 +16220,13 @@ GLboolean GLEWAPIENTRY glewIsSupported (const char* name)
continue;
}
#endif
#ifdef GL_INTEL_performance_query
if (_glewStrSame3(&pos, &len, (const GLubyte*)"performance_query", 17))
{
ret = GLEW_INTEL_performance_query;
continue;
}
#endif
#ifdef GL_INTEL_texture_scissor
if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_scissor", 15))
{
@ -16887,6 +16977,13 @@ GLboolean GLEWAPIENTRY glewIsSupported (const char* name)
ret = GLEW_REGAL_log;
continue;
}
#endif
#ifdef GL_REGAL_proc_address
if (_glewStrSame3(&pos, &len, (const GLubyte*)"proc_address", 12))
{
ret = GLEW_REGAL_proc_address;
continue;
}
#endif
}
if (_glewStrSame2(&pos, &len, (const GLubyte*)"REND_", 5))

View file

@ -757,6 +757,15 @@ static void _glewInfo_GL_AMD_shader_stencil_export (void)
#endif /* GL_AMD_shader_stencil_export */
#ifdef GL_AMD_shader_stencil_value_export
static void _glewInfo_GL_AMD_shader_stencil_value_export (void)
{
glewPrintExt("GL_AMD_shader_stencil_value_export", GLEW_AMD_shader_stencil_value_export, glewIsSupported("GL_AMD_shader_stencil_value_export"), glewGetExtension("GL_AMD_shader_stencil_value_export"));
}
#endif /* GL_AMD_shader_stencil_value_export */
#ifdef GL_AMD_shader_trinary_minmax
static void _glewInfo_GL_AMD_shader_trinary_minmax (void)
@ -5075,6 +5084,26 @@ static void _glewInfo_GL_INTEL_parallel_arrays (void)
#endif /* GL_INTEL_parallel_arrays */
#ifdef GL_INTEL_performance_query
static void _glewInfo_GL_INTEL_performance_query (void)
{
glewPrintExt("GL_INTEL_performance_query", GLEW_INTEL_performance_query, glewIsSupported("GL_INTEL_performance_query"), glewGetExtension("GL_INTEL_performance_query"));
glewInfoFunc("glBeginPerfQueryINTEL", glBeginPerfQueryINTEL == NULL);
glewInfoFunc("glCreatePerfQueryINTEL", glCreatePerfQueryINTEL == NULL);
glewInfoFunc("glDeletePerfQueryINTEL", glDeletePerfQueryINTEL == NULL);
glewInfoFunc("glEndPerfQueryINTEL", glEndPerfQueryINTEL == NULL);
glewInfoFunc("glGetFirstPerfQueryIdINTEL", glGetFirstPerfQueryIdINTEL == NULL);
glewInfoFunc("glGetNextPerfQueryIdINTEL", glGetNextPerfQueryIdINTEL == NULL);
glewInfoFunc("glGetPerfCounterInfoINTEL", glGetPerfCounterInfoINTEL == NULL);
glewInfoFunc("glGetPerfQueryDataINTEL", glGetPerfQueryDataINTEL == NULL);
glewInfoFunc("glGetPerfQueryIdByNameINTEL", glGetPerfQueryIdByNameINTEL == NULL);
glewInfoFunc("glGetPerfQueryInfoINTEL", glGetPerfQueryInfoINTEL == NULL);
}
#endif /* GL_INTEL_performance_query */
#ifdef GL_INTEL_texture_scissor
static void _glewInfo_GL_INTEL_texture_scissor (void)
@ -6534,6 +6563,17 @@ static void _glewInfo_GL_REGAL_log (void)
#endif /* GL_REGAL_log */
#ifdef GL_REGAL_proc_address
static void _glewInfo_GL_REGAL_proc_address (void)
{
glewPrintExt("GL_REGAL_proc_address", GLEW_REGAL_proc_address, glewIsSupported("GL_REGAL_proc_address"), glewGetExtension("GL_REGAL_proc_address"));
glewInfoFunc("glGetProcAddressREGAL", glGetProcAddressREGAL == NULL);
}
#endif /* GL_REGAL_proc_address */
#ifdef GL_REND_screen_coordinates
static void _glewInfo_GL_REND_screen_coordinates (void)
@ -8677,6 +8717,9 @@ static void glewInfo (void)
#ifdef GL_AMD_shader_stencil_export
_glewInfo_GL_AMD_shader_stencil_export();
#endif /* GL_AMD_shader_stencil_export */
#ifdef GL_AMD_shader_stencil_value_export
_glewInfo_GL_AMD_shader_stencil_value_export();
#endif /* GL_AMD_shader_stencil_value_export */
#ifdef GL_AMD_shader_trinary_minmax
_glewInfo_GL_AMD_shader_trinary_minmax();
#endif /* GL_AMD_shader_trinary_minmax */
@ -9637,6 +9680,9 @@ static void glewInfo (void)
#ifdef GL_INTEL_parallel_arrays
_glewInfo_GL_INTEL_parallel_arrays();
#endif /* GL_INTEL_parallel_arrays */
#ifdef GL_INTEL_performance_query
_glewInfo_GL_INTEL_performance_query();
#endif /* GL_INTEL_performance_query */
#ifdef GL_INTEL_texture_scissor
_glewInfo_GL_INTEL_texture_scissor();
#endif /* GL_INTEL_texture_scissor */
@ -9946,6 +9992,9 @@ static void glewInfo (void)
#ifdef GL_REGAL_log
_glewInfo_GL_REGAL_log();
#endif /* GL_REGAL_log */
#ifdef GL_REGAL_proc_address
_glewInfo_GL_REGAL_proc_address();
#endif /* GL_REGAL_proc_address */
#ifdef GL_REND_screen_coordinates
_glewInfo_GL_REND_screen_coordinates();
#endif /* GL_REND_screen_coordinates */
@ -10703,7 +10752,7 @@ GLboolean glewCreateContext ()
if (GL_FALSE == aglSetCurrentContext(ctx)) return GL_TRUE;
/* Needed for Regal on the Mac */
#if defined(GLEW_REGAL) && defined(__APPLE__)
RegalMakeCurrent(octx);
RegalMakeCurrent(ctx);
#endif
return GL_FALSE;
}

View file

@ -598,7 +598,7 @@ VisualInfo (GLContext* ctx)
#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
void
VisualInfo (GLContext* ctx)
VisualInfo (GLContext* __attribute__((__unused__)) ctx)
{
/*
int attrib[] = { AGL_RGBA, AGL_NONE };

View file

@ -25462,7 +25462,7 @@ extern "C" {
{
RegalContext *_context = REGAL_GET_CONTEXT();
RegalAssert(Init::isInitialized());
App("glPathCommandsNV","(", path, ", ", numCommands, ", ", boost::print::optional(commands,Logging::pointers), ", ", numCoords, ", ", toString(coordType), ", ", boost::print::optional(coords,Logging::pointers), ")");
App("glPathCommandsNV","(", path, ", ", numCommands, ", ", Token::GLpathCommandToString(numCommands,commands), ", ", numCoords, ", ", Token::GLpathCoordToString(coordType), ", ", Token::GLpathCoordToString(numCoords,coordType,coords), ")");
if (!_context) return;
DispatchTableGL *_next = &_context->dispatcher.front();
RegalAssert(_next);
@ -25616,7 +25616,7 @@ extern "C" {
{
RegalContext *_context = REGAL_GET_CONTEXT();
RegalAssert(Init::isInitialized());
App("glPathSubCommandsNV","(", path, ", ", commandStart, ", ", commandsToDelete, ", ", numCommands, ", ", boost::print::optional(commands,Logging::pointers), ", ", numCoords, ", ", toString(coordType), ", ", boost::print::optional(coords,Logging::pointers), ")");
App("glPathSubCommandsNV","(", path, ", ", commandStart, ", ", commandsToDelete, ", ", numCommands, ", ", Token::GLpathCommandToString(numCommands,commands), ", ", numCoords, ", ", Token::GLpathCoordToString(coordType), ", ", Token::GLpathCoordToString(numCoords,coordType,coords), ")");
if (!_context) return;
DispatchTableGL *_next = &_context->dispatcher.front();
RegalAssert(_next);
@ -25627,7 +25627,7 @@ extern "C" {
{
RegalContext *_context = REGAL_GET_CONTEXT();
RegalAssert(Init::isInitialized());
App("glPathSubCoordsNV","(", path, ", ", coordStart, ", ", numCoords, ", ", toString(coordType), ", ", boost::print::optional(coords,Logging::pointers), ")");
App("glPathSubCoordsNV","(", path, ", ", coordStart, ", ", numCoords, ", ", Token::GLpathCoordToString(coordType), ", ", Token::GLpathCoordToString(numCoords,coordType,coords), ")");
if (!_context) return;
DispatchTableGL *_next = &_context->dispatcher.front();
RegalAssert(_next);
@ -29499,6 +29499,47 @@ extern "C" {
_next->call(&_next->glLogMessageCallbackREGAL)(callback);
}
/* GL_REGAL_proc_address */
REGAL_DECL void *REGAL_CALL glGetProcAddressREGAL(const GLchar *name)
{
RegalContext *_context = REGAL_GET_CONTEXT();
RegalAssert(Init::isInitialized());
App("glGetProcAddressREGAL","(", boost::print::quote(name,'"'), ")");
if (!_context) return NULL;
void *ret;
ret = Lookup::gl_Lookup<void *>(name);
if (ret)
return ret;
#if REGAL_SYS_WGL
ret = Lookup::wgl_Lookup<void *>(name);
if (ret)
return ret;
#endif
#if REGAL_SYS_GLX
ret = Lookup::glx_Lookup<void *>(name);
if (ret)
return ret;
#endif
#if REGAL_SYS_EGL
ret = Lookup::egl_Lookup<void *>(name);
if (ret)
return ret;
#endif
#if REGAL_SYS_OSX
ret = Lookup::cgl_Lookup<void *>(name);
if (ret)
return ret;
#endif
return NULL;
}
/* GL_SGIS_detail_texture */
REGAL_DECL void REGAL_CALL glDetailTexFuncSGIS(GLenum target, GLsizei n, const GLfloat *points)

View file

@ -908,6 +908,7 @@ EXPORTS
glGetPointerv
glGetPointervEXT
glGetPolygonStipple
glGetProcAddressREGAL
glGetProgramBinary
glGetProgramBinaryOES
glGetProgramEnvParameterIivNV

View file

@ -575,6 +575,7 @@ ContextInfo::ContextInfo()
gl_regal_error_string(false),
gl_regal_extension_query(false),
gl_regal_log(false),
gl_regal_proc_address(false),
gl_rend_screen_coordinates(false),
gl_s3_s3tc(false),
gl_sgis_color_range(false),
@ -1474,6 +1475,7 @@ ContextInfo::init(const RegalContext &context)
gl_regal_error_string = stringSetFind(e,"GL_REGAL_error_string");
gl_regal_extension_query = stringSetFind(e,"GL_REGAL_extension_query");
gl_regal_log = stringSetFind(e,"GL_REGAL_log");
gl_regal_proc_address = stringSetFind(e,"GL_REGAL_proc_address");
gl_rend_screen_coordinates = stringSetFind(e,"GL_REND_screen_coordinates");
gl_s3_s3tc = stringSetFind(e,"GL_S3_s3tc");
gl_sgis_color_range = stringSetFind(e,"GL_SGIS_color_range");
@ -2239,6 +2241,7 @@ ContextInfo::getExtension(const char *ext) const
if (!strcmp(ext,"GL_REGAL_error_string")) return gl_regal_error_string;
if (!strcmp(ext,"GL_REGAL_extension_query")) return gl_regal_extension_query;
if (!strcmp(ext,"GL_REGAL_log")) return gl_regal_log;
if (!strcmp(ext,"GL_REGAL_proc_address")) return gl_regal_proc_address;
if (!strcmp(ext,"GL_REND_screen_coordinates")) return gl_rend_screen_coordinates;
if (!strcmp(ext,"GL_S3_s3tc")) return gl_s3_s3tc;
if (!strcmp(ext,"GL_SGIS_color_range")) return gl_sgis_color_range;

View file

@ -597,6 +597,7 @@ struct ContextInfo
GLboolean gl_regal_error_string : 1;
GLboolean gl_regal_extension_query : 1;
GLboolean gl_regal_log : 1;
GLboolean gl_regal_proc_address : 1;
GLboolean gl_rend_screen_coordinates : 1;
GLboolean gl_s3_s3tc : 1;
GLboolean gl_sgis_color_range : 1;

View file

@ -42152,10 +42152,10 @@ static void REGAL_CALL code_glPathCommandsNV(GLuint path, GLsizei numCommands, c
_code << indent << "glPathCommandsNV(";
_code << path;
_code << ", "; _code << numCommands;
_code << ", "; _code << commands;
_code << ", "; _code << Token::GLpathCommandToString(numCommands,commands);
_code << ", "; _code << numCoords;
_code << ", "; _code << toString(coordType);
_code << ", "; _code << coords;
_code << ", "; _code << Token::GLpathCoordToString(coordType);
_code << ", "; _code << Token::GLpathCoordToString(numCoords,coordType,coords);
_code << ");\n";
if (_context->codeSource)
fprintf(_context->codeSource,"%s",_code.str().c_str());
@ -42419,10 +42419,10 @@ static void REGAL_CALL code_glPathSubCommandsNV(GLuint path, GLsizei commandStar
_code << ", "; _code << commandStart;
_code << ", "; _code << commandsToDelete;
_code << ", "; _code << numCommands;
_code << ", "; _code << commands;
_code << ", "; _code << Token::GLpathCommandToString(numCommands,commands);
_code << ", "; _code << numCoords;
_code << ", "; _code << toString(coordType);
_code << ", "; _code << coords;
_code << ", "; _code << Token::GLpathCoordToString(coordType);
_code << ", "; _code << Token::GLpathCoordToString(numCoords,coordType,coords);
_code << ");\n";
if (_context->codeSource)
fprintf(_context->codeSource,"%s",_code.str().c_str());
@ -42441,8 +42441,8 @@ static void REGAL_CALL code_glPathSubCoordsNV(GLuint path, GLsizei coordStart, G
_code << path;
_code << ", "; _code << coordStart;
_code << ", "; _code << numCoords;
_code << ", "; _code << toString(coordType);
_code << ", "; _code << coords;
_code << ", "; _code << Token::GLpathCoordToString(coordType);
_code << ", "; _code << Token::GLpathCoordToString(numCoords,coordType,coords);
_code << ");\n";
if (_context->codeSource)
fprintf(_context->codeSource,"%s",_code.str().c_str());

View file

@ -22984,7 +22984,7 @@ static void REGAL_CALL log_glPathCommandsNV(GLuint path, GLsizei numCommands, co
DispatchTableGL *_next = _context->dispatcher.logging.next();
RegalAssert(_next);
_next->call(&_next->glPathCommandsNV)(path, numCommands, commands, numCoords, coordType, coords);
Driver("glPathCommandsNV","(", path, ", ", numCommands, ", ", boost::print::optional(commands,Logging::pointers), ", ", numCoords, ", ", toString(coordType), ", ", boost::print::optional(coords,Logging::pointers), ")");
Driver("glPathCommandsNV","(", path, ", ", numCommands, ", ", Token::GLpathCommandToString(numCommands,commands), ", ", numCoords, ", ", Token::GLpathCoordToString(coordType), ", ", Token::GLpathCoordToString(numCoords,coordType,coords), ")");
}
static void REGAL_CALL log_glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const GLvoid *coords)
@ -23124,7 +23124,7 @@ static void REGAL_CALL log_glPathSubCommandsNV(GLuint path, GLsizei commandStart
DispatchTableGL *_next = _context->dispatcher.logging.next();
RegalAssert(_next);
_next->call(&_next->glPathSubCommandsNV)(path, commandStart, commandsToDelete, numCommands, commands, numCoords, coordType, coords);
Driver("glPathSubCommandsNV","(", path, ", ", commandStart, ", ", commandsToDelete, ", ", numCommands, ", ", boost::print::optional(commands,Logging::pointers), ", ", numCoords, ", ", toString(coordType), ", ", boost::print::optional(coords,Logging::pointers), ")");
Driver("glPathSubCommandsNV","(", path, ", ", commandStart, ", ", commandsToDelete, ", ", numCommands, ", ", Token::GLpathCommandToString(numCommands,commands), ", ", numCoords, ", ", Token::GLpathCoordToString(coordType), ", ", Token::GLpathCoordToString(numCoords,coordType,coords), ")");
}
static void REGAL_CALL log_glPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const GLvoid *coords)
@ -23134,7 +23134,7 @@ static void REGAL_CALL log_glPathSubCoordsNV(GLuint path, GLsizei coordStart, GL
DispatchTableGL *_next = _context->dispatcher.logging.next();
RegalAssert(_next);
_next->call(&_next->glPathSubCoordsNV)(path, coordStart, numCoords, coordType, coords);
Driver("glPathSubCoordsNV","(", path, ", ", coordStart, ", ", numCoords, ", ", toString(coordType), ", ", boost::print::optional(coords,Logging::pointers), ")");
Driver("glPathSubCoordsNV","(", path, ", ", coordStart, ", ", numCoords, ", ", Token::GLpathCoordToString(coordType), ", ", Token::GLpathCoordToString(numCoords,coordType,coords), ")");
}
static void REGAL_CALL log_glPathTexGenNV(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs)

View file

@ -277,6 +277,7 @@ EmuInfo::getExtension(const ContextInfo &contextInfo, const char *ext) const
if (!strcmp(ext,"GL_REGAL_error_string")) return true;
if (!strcmp(ext,"GL_REGAL_extension_query")) return true;
if (!strcmp(ext,"GL_REGAL_log")) return true;
if (!strcmp(ext,"GL_REGAL_proc_address")) return true;
return false;
}

View file

@ -53,7 +53,7 @@ REGAL_NAMESPACE_BEGIN
namespace Lookup {
const char * const gl_Name[2700] = {
const char * const gl_Name[2701] = {
"glAccum",
"glActiveProgramEXT",
"glActiveShaderProgram",
@ -962,6 +962,7 @@ const char * const gl_Name[2700] = {
"glGetPointerv",
"glGetPointervEXT",
"glGetPolygonStipple",
"glGetProcAddressREGAL",
"glGetProgramBinary",
"glGetProgramBinaryOES",
"glGetProgramEnvParameterIivNV",
@ -2756,7 +2757,7 @@ const char * const gl_Name[2700] = {
NULL
};
const void *gl_Value[2700] = {
const void *gl_Value[2701] = {
(void *)(glAccum),
(void *)(glActiveProgramEXT),
(void *)(glActiveShaderProgram),
@ -3665,6 +3666,7 @@ const void *gl_Value[2700] = {
(void *)(glGetPointerv),
(void *)(glGetPointervEXT),
(void *)(glGetPolygonStipple),
(void *)(glGetProcAddressREGAL),
(void *)(glGetProgramBinary),
(void *)(glGetProgramBinaryOES),
(void *)(glGetProgramEnvParameterIivNV),
@ -5459,7 +5461,7 @@ const void *gl_Value[2700] = {
NULL
};
const size_t gl_Offset[2700] = {
const size_t gl_Offset[2701] = {
offsetof(Dispatch::GL,glAccum)/sizeof(void *),
offsetof(Dispatch::GL,glActiveProgramEXT)/sizeof(void *),
offsetof(Dispatch::GL,glActiveShaderProgram)/sizeof(void *),
@ -6368,6 +6370,7 @@ const size_t gl_Offset[2700] = {
offsetof(Dispatch::GL,glGetPointerv)/sizeof(void *),
offsetof(Dispatch::GL,glGetPointervEXT)/sizeof(void *),
offsetof(Dispatch::GL,glGetPolygonStipple)/sizeof(void *),
0,
offsetof(Dispatch::GL,glGetProgramBinary)/sizeof(void *),
offsetof(Dispatch::GL,glGetProgramBinaryOES)/sizeof(void *),
offsetof(Dispatch::GL,glGetProgramEnvParameterIivNV)/sizeof(void *),

View file

@ -59,22 +59,22 @@ inline int NameCmp(const void *a, const void *b)
return std::strcmp(*(const char **) a, *(const char **) b);
}
extern const char * const gl_Name[2700];
extern const void *gl_Value[2700];
extern const char * const gl_Name[2701];
extern const void *gl_Value[2701];
template<typename T>
T
gl_Lookup(const char *name, T def = NULL)
{
const char **res = (const char **) std::bsearch(&name, gl_Name, 2699, sizeof(const char *), NameCmp);
const char **res = (const char **) std::bsearch(&name, gl_Name, 2700, sizeof(const char *), NameCmp);
return res ? reinterpret_cast<T>(const_cast<void *>(gl_Value[(size_t) (res - gl_Name)])) : def;
}
extern const size_t gl_Offset[2700];
extern const size_t gl_Offset[2701];
inline size_t gl_LookupOffset(const char *name)
{
const char **res = (const char **) std::bsearch(&name, gl_Name, 2699, sizeof(const char *), NameCmp);
const char **res = (const char **) std::bsearch(&name, gl_Name, 2700, sizeof(const char *), NameCmp);
return res ? gl_Offset[(size_t) (res - gl_Name)] : 0;
}

View file

@ -577,6 +577,7 @@ Statistics::log() const
log("GL_REGAL_ERROR_STRING",gl_regal_error_string);
log("GL_REGAL_EXTENSION_QUERY",gl_regal_extension_query);
log("GL_REGAL_LOG",gl_regal_log);
log("GL_REGAL_PROC_ADDRESS",gl_regal_proc_address);
log("GL_REND_SCREEN_COORDINATES",gl_rend_screen_coordinates);
log("GL_S3_S3TC",gl_s3_s3tc);
log("GL_SGIS_COLOR_RANGE",gl_sgis_color_range);

View file

@ -559,6 +559,7 @@ struct Statistics
GLuint gl_regal_error_string;
GLuint gl_regal_extension_query;
GLuint gl_regal_log;
GLuint gl_regal_proc_address;
GLuint gl_rend_screen_coordinates;
GLuint gl_s3_s3tc;
GLuint gl_sgis_color_range;

View file

@ -213,6 +213,30 @@ namespace Token {
}
}
std::string GLpathCommandToString(GLuint num, const GLubyte *v)
{
std::vector<const char *> tmp(num);
for (GLuint i=0; i<num; ++i)
tmp[i] = GLpathCommandToString(v[i]);
return boost::print::print_string(boost::print::iterator(tmp.begin(),tmp.end()));
}
std::string GLpathCoordToString (GLuint num, GLenum t, const void *v)
{
switch (t)
{
case GL_BYTE: return boost::print::print_string(boost::print::array(reinterpret_cast<const GLbyte *>(v),num));
case GL_UNSIGNED_BYTE: return boost::print::print_string(boost::print::array(reinterpret_cast<const GLubyte *>(v),num));
case GL_SHORT: return boost::print::print_string(boost::print::array(reinterpret_cast<const GLshort *>(v),num));
case GL_UNSIGNED_SHORT: return boost::print::print_string(boost::print::array(reinterpret_cast<const GLushort *>(v),num));
case GL_FLOAT: return boost::print::print_string(boost::print::array(reinterpret_cast<const GLfloat *>(v),num));
default:
break;
}
return std::string();
}
std::string GLblitFramebufferToString(GLbitfield v)
{
const GLbitfield other = v & ~(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
@ -4031,6 +4055,83 @@ namespace Token {
return "unknown_gl_enum";
}
const char * GLpathCoordToString( GLenum v ) {
#if REGAL_ENUM_TO_STRING
switch( v ) {
case 0x1400: return "GL_BYTE";
case 0x1401: return "GL_UNSIGNED_BYTE";
case 0x1402: return "GL_SHORT";
case 0x1403: return "GL_UNSIGNED_SHORT";
case 0x1406: return "GL_FLOAT";
default: break;
}
#endif // REGAL_ENUM_TO_STRING
return "unknown";
}
const char * GLpathCommandToString( GLubyte v ) {
#if REGAL_ENUM_TO_STRING
switch( v ) {
case 'z':
case 'Z':
case 0x00: return "GL_CLOSE_PATH_NV";
case 'M':
case 0x02: return "GL_MOVE_TO_NV";
case 'm':
case 0x03: return "GL_RELATIVE_MOVE_TO_NV";
case 'L':
case 0x04: return "GL_LINE_TO_NV";
case 'l':
case 0x05: return "GL_RELATIVE_LINE_TO_NV";
case 'H':
case 0x06: return "GL_HORIZONTAL_LINE_TO_NV";
case 'h':
case 0x07: return "GL_RELATIVE_HORIZONTAL_LINE_TO_NV";
case 'V':
case 0x08: return "GL_VERTICAL_LINE_TO_NV";
case 'v':
case 0x09: return "GL_RELATIVE_VERTICAL_LINE_TO_NV";
case 'Q':
case 0x0a: return "GL_QUADRATIC_CURVE_TO_NV";
case 'q':
case 0x0b: return "GL_RELATIVE_QUADRATIC_CURVE_TO_NV";
case 'C':
case 0x0c: return "GL_CUBIC_CURVE_TO_NV";
case 'c':
case 0x0d: return "GL_RELATIVE_CUBIC_CURVE_TO_NV";
case 'T':
case 0x0e: return "GL_SMOOTH_QUADRATIC_CURVE_TO_NV";
case 't':
case 0x0f: return "GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV";
case 'S':
case 0x10: return "GL_SMOOTH_CUBIC_CURVE_TO_NV";
case 's':
case 0x11: return "GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV";
case 0x12: return "GL_SMALL_CCW_ARC_TO_NV";
case 0x13: return "GL_RELATIVE_SMALL_CCW_ARC_TO_NV";
case 0x14: return "GL_SMALL_CW_ARC_TO_NV";
case 0x15: return "GL_RELATIVE_SMALL_CW_ARC_TO_NV";
case 0x16: return "GL_LARGE_CCW_ARC_TO_NV";
case 0x17: return "GL_RELATIVE_LARGE_CCW_ARC_TO_NV";
case 0x18: return "GL_LARGE_CW_ARC_TO_NV";
case 0x19: return "GL_RELATIVE_LARGE_CW_ARC_TO_NV";
case 0xf0: return "GL_RESTART_PATH_NV";
case 0xf2: return "GL_DUP_FIRST_CUBIC_CURVE_TO_NV";
case 0xf4: return "GL_DUP_LAST_CUBIC_CURVE_TO_NV";
case 0xf6: return "GL_RECT_NV";
case 0xf8: return "GL_CIRCULAR_CCW_ARC_TO_NV";
case 0xfa: return "GL_CIRCULAR_CW_ARC_TO_NV";
case 0xfc: return "GL_CIRCULAR_TANGENT_ARC_TO_NV";
case 'A':
case 0xfe: return "GL_ARC_TO_NV";
case 'a':
case 0xff: return "GL_RELATIVE_ARC_TO_NV";
default: break;
}
#endif // REGAL_ENUM_TO_STRING
return "unknown";
}
const char * GLerrorToString( GLenum e ) {
#if REGAL_ENUM_TO_STRING
switch( e ) {

View file

@ -63,6 +63,12 @@ namespace Token {
std::string GLtextureToString (GLenum v); // GL_TEXTUREi or 0xaaaa
std::string GLmodeToString (GLenum v); // GL_PRIMITIVE or 0xaaaa
const char * GLpathCommandToString (GLubyte v); // glPathCommandsNV etc
std::string GLpathCommandToString (GLuint num, const GLubyte *v); // glPathCommandsNV etc
const char * GLpathCoordToString (GLenum v); // glPathCommandsNV etc
std::string GLpathCoordToString (GLuint num, GLenum t, const void *v); // glPathCommandsNV etc
// Bitfield strings
std::string GLblitFramebufferToString (GLbitfield v);

View file

@ -908,6 +908,7 @@ EXPORTS
rglGetPointerv
rglGetPointervEXT
rglGetPolygonStipple
rglGetProcAddressREGAL
rglGetProgramBinary
rglGetProgramBinaryOES
rglGetProgramEnvParameterIivNV

View file

@ -959,6 +959,7 @@ _glGetPointeri_vEXT
_glGetPointerv
_glGetPointervEXT
_glGetPolygonStipple
_glGetProcAddressREGAL
_glGetProgramBinary
_glGetProgramBinaryOES
_glGetProgramEnvParameterIivNV